将 SqlLite3 数据库中的数据插入 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.


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]))

这reults中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


慕的地8271018
浏览 299回答 1
1回答

慕娘9325324

在尝试调试上面的代码并看到data返回的值后,我认为一定有什么问题。在浏览了这个setupUI()函数之后,我遇到了这条线self.tblTests.setColumnCount(0)。一开始,我认为由于setItem()调用,这行代码是多余的,但为了调试,我决定将其保留在代码中。我在黑暗中试了一下,设置self.tblTests.setColumnCount(0)为 4,现在它按预期工作了。我在文档中没有看到任何建议setColumnCount在阅读文档时需要手动输入的内容。希望这对其他人也有帮助!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python