它是如何
self.model = MyTableModel(self, [User('Mary', '12345'), User('John', 'qwerty')], ['name', 'password'])
可以通過 對象實例User('Mary', '12345')
到MyTableModel()
當我做不 看到def __init__(self, parent, rows, columns)
成立了以它? 據我所知,行和列是參數從 獲取窗口小部件對象的信息,而不是外部的非窗口小部件對象。Python的PyQt的MVC-傳遞對象到模型類什麼是最後一部分
['name', 'password']
當給 做什麼MyTableModel()?其實,我想()用戶的只有一個實例,並有模型 類更新用戶()對象實例如果人改變了 lineEdit部件。因爲「mary」和「12345」在self.model = MyTableModel(self,[User('Mary','12345')]是硬編碼值, 如何使用lineEdit小部件的值代替 User參數,參數)?
from PyQt4 import QtCore, QtGui 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) self.model = MyTableModel(self, [User('Mary', '12345'), User('John', 'qwerty')], ['name', 'password']) 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_()
3
A
回答
0
- 它是如何
self.model = MyTableModel(self, [User('Mary', '12345'), User('John', 'qwerty')], ['name', 'password'])
可以通過 對象實例User('Mary', '12345')
到MyTableModel()
當我不 看到def __init__(self, parent, rows, columns)
成立了以它? 據我所知,行和列是參數,從 獲取小部件對象的信息,而不是外部的非小部件對象。
這個參數在Qt-MVC-sense中並不代表行和列。相反,行應該是對象和列的列表,表示應該由模型實例展示的傳遞對象(在行參數中)的屬性的字符串列表。
- 什麼最後一部分
['name', 'password']
時給予 MyTableModel做()?
MyTableModel使用它來知道對象的哪些屬性應該用於顯示。
- 其實,我想()用戶的只有一個實例,並有模型 類更新用戶()對象實例如果人改變了 lineEdit部件。因爲「mary」和「12345」在self.model = MyTableModel(self,[User('Mary','12345')]是硬編碼值, 如何使用lineEdit小部件的值代替 User參數,參數)?
當你的模型正確地實現了setData
協議和模型中的所有項目,用戶已經可以更改值模型內(或使用該模型視圖返回ItemIsEditable
) 。您不需要額外的輸入或更改GUI即可完成此操作。
(如果您只是想知道如何獲取QLineEdit的當前文本內容,那就是text()
方法)
相關問題
- 1. 傳遞對象的名單與對象屬性MVC模型5
- 2. 用PHPUnit的模擬對象傳遞類型對象的參數
- 3. Python的傳遞對象到對象
- 4. ASP.Net MVC 「傳遞到字典的模型項的類型爲「System.Collections.Generic.List」
- 5. 傳遞對象子類型
- 6. MVC從模型通過控制器傳遞對象到視圖
- 7. (VB.NET MVC)模型傳遞到字典項的類型爲「System.Data.Entity.DynamicProxies
- 8. 複製MVC模型類對象的值到另一個對象
- 9. 模型對象不會傳遞給Spring MVC中的jsps - InternalResourceView - renderMergedOutputModel
- 10. 類之間的Python傳遞對象
- 11. MVC - 模型到json對象
- 12. JSON對象到模型MVC
- 13. ASP.NET MVC 5 - 自定義類型的RedirectToAction傳遞空對象
- 14. 不同類型的對象傳遞
- 15. 從Angularjs傳遞對象到MVC的控制器和映射到類對象
- 16. 傳遞到字典ASP.NET MVC模型產品類型
- 17. ASP.Net MVC - 合併模型和的FormCollection到對象傳遞給視圖
- 18. ASP.NET MVC視圖模型傳遞到不同的視圖模型
- 19. PHP MVC模型傳遞到控制器
- 20. 傳遞參數__init__對象模型類的迭代查詢集
- 21. 如何傳遞模型對象查看Asp.Net MVC使用Ajax
- 22. MVC:從模型的數據傳遞到CSHTML的ASP.NET MVC
- 23. EF MVC的LINQ - 錯誤傳遞模型到MVC的WebGrid
- 24. 從MVC傳遞bean對象到Spring WebFlow
- 25. 從JavaScript傳遞JSON對象到ASP.NET MVC
- 26. 跨模型傳遞對象ID Rails
- 27. 模型關係和傳遞對象
- 28. Angularjs +模型+傳遞參數和對象
- 29. 傳遞對象類型動態
- 30. 在Access VBA中傳遞對象類型