如何让我的 QTableWidget 类(任何类)自行更新/刷新?

Posted

技术标签:

【中文标题】如何让我的 QTableWidget 类(任何类)自行更新/刷新?【英文标题】:How do I make my QTableWidget class (any class) update/refresh itself? 【发布时间】:2014-02-25 18:12:55 【问题描述】:

我正在使用 pyqt4 制作一个 gui。当我将来自 sqlite 的数据插入到我的 qtablewidget 表中时,它只会在我关闭程序并重新打开它后自行更新。在插入/删除或更改数据后,如何让程序自动更新(刷新类)?

【问题讨论】:

【参考方案1】:

由于我不确定您是如何实现代码的,也许下面的代码可以帮助您。

#!/usr/bin/python
import sys
from PyQt4.QtGui import QWidget, QPushButton, QMainWindow, QTableWidget,QTableWidgetItem, QVBoxLayout, QApplication
from PyQt4.QtCore import Qt

class MyMainWindow(QMainWindow):

    def __init__(self, parent=None):
        """
        """

        super(MyMainWindow,self).__init__(parent)
        self.setWidgets()

    def setWidgets(self, ):


        vBox = QVBoxLayout()
        mainFrame = QWidget()

        self._pressButton = QPushButton("Update Table",self)
        self._pressButton.clicked.connect(self.updateTable)

        self._table = QTableWidget(self)
        self._table.setRowCount(3)
        self._table.setColumnCount(3)
        vBox.addWidget(self._pressButton)
        vBox.addWidget(self._table)

        mainFrame.setLayout(vBox)
        self.setCentralWidget(mainFrame)

    def updateTable(self, ):

        i = self._table.currentRow()
        if i == -1:
            i=0

        self._table.insertRow(i)
        self._table.setItem(i,0,QTableWidgetItem("Test"))


if __name__ == '__main__':
    qApp = QApplication(sys.argv)
    MainWindow = MyMainWindow()

    MainWindow.show()
    sys.exit(qApp.exec_())

干杯

【讨论】:

感谢您的反馈,但是我只想重新启动该类,例如将自身外部(在另一个类中)的“MyMainWindow”连接到一个按钮等以再次运行它,以便表格自行刷新我所做的更改。

以上是关于如何让我的 QTableWidget 类(任何类)自行更新/刷新?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 QTableWidget 的列占据最大空间?

如何让我的网格填充所有单元格?

QTableWidget 作为 QTreeView 中的子级

QTablewidget 在 PyQt5 中不显示新的 cellWidgets

如何让我的按钮在其他类中可见

qtablewidget怎样设置表