将数据从 Sqlite3 数据库插入到 QTableWidget
Inserting data from an SqlLite3 database into a QTableWidget
我正在为我们的测试平台构建一个 GUI,已指示用户应该能够 select 测试从 table 到 运行。我在将数据放入 table 本身时遇到问题。我可以很好地获取数据,但无法填充 QTableWidget
这是我尝试用
填充 table 的数据样本
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
.
实现的最新尝试
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]))
这导致 None
从 self.tblTests.setItem(row, column, QtWidgets.QTableWidgetItem(rows[row][column]))
返回。
我也试过下面的方法
for row, key in enumerate(rows):
for column, data in enumerate(rows[row]):
self.tblTests.setItem(row, column, QtWidgets.QTableWidgetItem(str(data)))
在这种情况下,data
returns
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
需要在阅读文档时手动输入。
希望这对其他人也有帮助!
我正在为我们的测试平台构建一个 GUI,已指示用户应该能够 select 测试从 table 到 运行。我在将数据放入 table 本身时遇到问题。我可以很好地获取数据,但无法填充 QTableWidget
这是我尝试用
填充 table 的数据样本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
.
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]))
这导致 None
从 self.tblTests.setItem(row, column, QtWidgets.QTableWidgetItem(rows[row][column]))
返回。
我也试过下面的方法
for row, key in enumerate(rows):
for column, data in enumerate(rows[row]):
self.tblTests.setItem(row, column, QtWidgets.QTableWidgetItem(str(data)))
在这种情况下,data
returns
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
需要在阅读文档时手动输入。
希望这对其他人也有帮助!