[英]Inserting data from an SqlLite3 database into a QTableWidget
我正在為測試平台構建GUI,已指示用戶應該能夠從表中選擇要運行的測試。 我在將數據放入表本身時遇到問題。 我可以很好地獲取數據,但不能填充QTableWidget
這是我嘗試用表填充數據的示例
Id | Test name | Owner | Script source
---|----------- |-------|--------------
1 | Login | 1 | test_login_s
2 | Logout | 1 | test_logout_s
3 | User > Edit | 1 | test_user_edit_s
最初,我嘗試使用sqlite3
軟件包來完成此任務,但是閱讀使我進入了QtSQL
軟件包,該軟件包對於給定任務似乎更易於使用。
這是我使用QtSQL
進行QtSQL
最新嘗試。
def load_data(self):
connection = sqlite3.connect('data.db')
cursor = connection.cursor()
cursor.execute('''SELECT * FROM Tests''')
rows = cursor.fetchall()
for row in range(len(rows)):
for column in range(len(rows[row])):
self.tblTests.setItem(row, column, QtWidgets.QTableWidgetItem(rows[row][column]))
結果是從self.tblTests.setItem(row, column, QtWidgets.QTableWidgetItem(rows[row][column]))
返回None
。
我也嘗試了以下方法
for row, key in enumerate(rows):
for column, data in enumerate(rows[row]):
self.tblTests.setItem(row, column, QtWidgets.QTableWidgetItem(str(data)))
在這種情況下, data
返回
1
Login
1
test_login_s
2
Logout
1
test_logout_s
3
User > Edit
1
test_user_edit_s
這似乎是在正確的軌道上。 但是,它仍然不會填充tblTests
在嘗試調試上述代碼並看到data
返回值后,我認為必須關閉某些功能。
在瀏覽setupUI()
函數之后,我遇到了self.tblTests.setColumnCount(0)
這行。 最初,我認為由於setItem()
調用,此行是多余的,但為了調試起見,決定將其保留在代碼中。
我在黑暗中刺了一下,並將self.tblTests.setColumnCount(0)
設置為4,現在可以正常使用了。
我在文檔中什么都沒有看到,建議在閱讀文檔時需要手動輸入setColumnCount
。
希望這也會對其他人有所幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.