首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更新QTableWidget?

如何更新QTableWidget?
EN

Stack Overflow用户
提问于 2014-11-30 10:58:24
回答 1查看 10K关注 0票数 4

我的目标是在添加新联系人时更新QTableQidget。我没有问题添加联系人或他们出现在QTableWidget。我的问题是,我必须退出程序,然后再启动它,以查看新添加的联系人。是一种更新或刷新QTableWidget的方法,以便在添加到数据库时显示新的联系人,而不必退出程序。我尝试了update()和重新绘制,但是没有什么改变。

代码语言:javascript
复制
class BrowseContacts(QtGui.QWidget):
    #Display New Contacts Widget
    def __init__(self):
        super(BrowseContacts, self).__init__()
        self.initUI()
        self.contactsData()


    #User Interface
    def initUI(self):
        self.new_layout = QtGui.QGridLayout()

        self.contactsTableWidget = QtGui.QTableWidget()
        self.contactsTableWidget.setColumnCount(10)

        self.contacts_label = ['First Name', 'Last Name', 'Home Phone', 'Cell Phone', 'Business Name', 'Email Address', 'Address', 'City', 'State', 'Zip Code']
        self.contactsTableWidget.setHorizontalHeaderLabels(self.contacts_label)
        self.contactsTableWidget.setSortingEnabled(True)

        self.new_layout.addWidget(self.contactsTableWidget)
        self.setLayout(self.new_layout)

        self.setStyleSheet('QTableWidget::item {background-color: #ffffff; color: #000000}' 'QTableWidget::item:selected {background-color: #3aa8ad; color: #ffffff;}')

    def contactsData(self):
        #Connect to Database
        connection = sqlite3.connect('contacts.db')
        cur = connection.cursor()

        rowcount = cur.execute('''SELECT COUNT(*) FROM contacts''').fetchone()[0]

        self.contactsTableWidget.setRowCount(rowcount)
        cur.execute('''SELECT  * FROM contacts''')

        for row, contacts in enumerate(cur):
            for column, contact in enumerate(contacts):
                self.contactsTableWidget.setItem(row, column, QtGui.QTableWidgetItem(str(contact)))

        cur.close()
        connection.commit()
        connection.close()

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-02 09:02:42

您只需调用contactsData()一次,它就会将来自数据库的数据填充到qtablewidget中。如果要刷新qtablewidget,则需要再次调用该方法。您可以创建pushbutton并将其连接到contactsData(),因此当您按下该按钮时,就可以从数据库中重新加载联系人,而不必退出程序。

如果需要自动完成,可以创建调用contactsData()的计时器。

编辑

只需在contactsData()方法的末尾添加这一行:

代码语言:javascript
复制
QtCore.QTimer.singleShot(10000, self.contactsData)

它将每10秒重新加载数据。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27212489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档