簡體   English   中英

將數據從SqlLite3數據庫插入QTableWidget

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM