![](/img/trans.png)
[英]QTableView not showing part of my data and resetHeaderData not fired with PyQt5 and Python
[英]display data from MySQL database to qtableview python pyqt5
我在 CRUD 方法中遇到了問題,我使用的是 pyqt5 和 python 3.9,我想顯示數據庫中的數據並將其呈現到 qtableview 中,我有兩個問題,第一個方法不起作用,第二個是:i不知道如何自動使該功能起作用,我希望在導航到界面時激活該應用程序,以使每個老師都能看到他擁有的學生
這是我的代碼
連接= mc.connect(主機=cr.host,用戶=cr.user,密碼=cr.password,數據庫=cr.database)cur=connection.cursor()
rows = "select count(*) from student"
query = "SELECT Student_id, FirstName, LastName FROM student"
cur.execute(query)
result = cur.fetchall()
print("heel")
while query.next():
print("heel")
rows = self.view.rowCount()
self.view.setRowCount(rows + 1)
self.view.setItem(rows, 0, self.Student_List(str(query.value(0))))
self.view.setItem(rows, 1, self.Student_List(query.value(1)))
self.view.setItem(rows, 2, self.Student_List(query.value(2)))
self.view.resizeColumnsToContents()
except mc.Error as e:
print(e)
這是我的表格視圖
self.model = QSqlTableModel(self)
self.model.setTable("contacts")
self.model.setEditStrategy(QSqlTableModel.OnFieldChange)
self.model.setHeaderData(0, Qt.Horizontal, "Student_id")
self.model.setHeaderData(1, Qt.Horizontal, "FirstName")
self.model.setHeaderData(2, Qt.Horizontal, "LastName")
self.model.select()
如果您想自動顯示數據,請不要使用方法,因為如果您願意,您應該調用它。 代碼會很亂,但它會為你工作。
幾個月前,我使用tablewidget創建了一個 CRUD 應用程序,但如果你只想顯示數據,你應該使用tableview 。
如果您想使用qtablewidget ,此代碼將為您工作,但如果您使用tableview您應該創建模型或使用pyqt預定義類
try:
connection = mc.connect(host=cr.host, user=cr.user, password=cr.password, database=cr.database)
cur = connection.cursor()
cur.execute("SELECT * FROM student")
result = cur.fetchall()
self.list.setRowCount(0)
print("ff")
for row_number, row_data in enumerate(result):
self.list.insertRow(row_number)
for column_number, data in enumerate(row_data):
self.list.setItem(row_number, zcolumn_number, QTableWidgetItem(str(data)))
except mc.Error as e:
print(e)
注意: list
是表名
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.