我正在为我们的测试平台构建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
进行修饰的尝试。
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
返回
1
Login
1
test_login_s
2
Logout
1
test_logout_s
3
User > Edit
1
test_user_edit_s
这似乎是在正确的轨道上。但是,它仍然不会填充tblTests
答案 0 :(得分:0)
尝试调试上面的代码后,看到data
返回了值,我以为必须关闭某些东西。
浏览setupUI()
函数后,我遇到了self.tblTests.setColumnCount(0)
行。最初,我以为由于setItem()
的调用,该行是多余的,但为了调试起见,决定将其保留在代码中。
我在黑暗中刺了一下,并将self.tblTests.setColumnCount(0)
设置为4,现在可以正常使用了。
我在文档中什么都没有看到,建议在阅读文档时需要手动输入setColumnCount
。
希望这对其他人也有帮助!