Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from PySide import QtGui, QtCore
- import sys
- class User():
- def __init__(self, name, password):
- self.name = name
- self.password = password
- class MyTableModel(QtCore.QAbstractTableModel):
- def __init__(self, parent, rows, columns):
- super().__init__(parent)
- self.rows = rows
- self.columns = columns
- def columnCount(self, index):
- return len(self.columns)
- def rowCount(self, index):
- return len(self.rows)
- def data(self, index, role):
- if index.isValid():
- if (role == QtCore.Qt.DisplayRole) or (role == QtCore.Qt.EditRole):
- attr_name = self.columns[index.column()]
- row = self.rows[index.row()]
- return getattr(row, attr_name)
- def flags(self, index):
- if not index.isValid():
- return QtCore.Qt.ItemIsEnabled
- else:
- return QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEditable
- def setData(self, index, value, role=QtCore.Qt.EditRole):
- if index.isValid() and role == QtCore.Qt.EditRole:
- attr_name = self.columns[index.column()]
- row = self.rows[index.row()]
- setattr(row, attr_name, value)
- class MyWindow(QtGui.QWidget):
- def __init__(self):
- super(MyWindow, self).__init__()
- self.setLayout(QtGui.QFormLayout(self))
- self.user_edit = QtGui.QLineEdit(self)
- self.password_edit = QtGui.QLineEdit(self)
- self.mapper = QtGui.QDataWidgetMapper(self)
- user1 = User('Mary', '12345')
- user2 = User('John', 'qwerty')
- rows = [user1, user2]
- columns = ['name', 'password']
- self.model = MyTableModel(self, rows, columns)
- self.mapper.setModel(self.model)
- self.mapper.addMapping(self.user_edit, 0)
- self.mapper.addMapping(self.password_edit, 1)
- self.mapper.toFirst()
- self.layout().addRow("User name:", self.user_edit)
- self.layout().addRow("Password:", self.password_edit)
- self.btnPrevious = QtGui.QPushButton("Previous", self)
- self.btnNext = QtGui.QPushButton("Next",self)
- self.layout().addWidget(self.btnPrevious)
- self.layout().addWidget(self.btnNext)
- self.btnPrevious.clicked.connect(self.mapper.toPrevious)
- self.btnNext.clicked.connect(self.mapper.toNext)
- if __name__ == "__main__":
- app = QtGui.QApplication(sys.argv)
- win = MyWindow()
- win.show()
- app.exec_()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement