如何每隔XX分钟更新一次QTableView

时间:2019-06-14 10:32:47

标签: python pyqt5 qtableview qabstracttablemodel

我有一个QTableView dipl,它用填充了数据框的QAbstractTableModel表示。

我的数据框是从摘录中加载的,我想了解如何在每次加载数据框时(例如每15分钟)更新QTableView

我试图在我的模型中创建一个函数更新,该函数接受参数数据框,将其插入模型的数据中并发出信号layoutAboutToBeChanged和layoutChanged。但是我不知道如何使用此功能并在代码已经运行时每15分钟运行一次(即已经显示了表格视图)

class TicketGUI(QAbstractTableModel):
    def __init__(self, data):
        QAbstractTableModel.__init__(self)
        self._data = data

    def rowCount(self, parent=None):
        return self._data.shape[0]

    def columnCount(self, parent=None):
        return self._data.shape[1]

    def data(self, index, role=Qt.DisplayRole):
        if index.isValid():
            if role == Qt.DisplayRole:
                return str(self._data.iloc[index.row(), index.column()])

    def headerData(self, col, orientation, role=Qt.DisplayRole):
        if orientation == Qt.Horizontal and role == Qt.DisplayRole:
            return self._data.columns[col]
        return None

    def update(self, data):
        self.layoutAboutToBeChanged.emit()
        self._data = data
        self.layoutChanged.emit()

if __name__ == 'main':
    EM = Extract(user_id, mdp) #Extract manager
    tickets.load(EM) #Load data from extract
    data = tickets.toDataframe() #Convert data into dataframe
    app = QApplication(sys.argv)
    model = TicketGUI(data)
    view = QTableView() #Create a view TableView
    view.setModel(model) #Set the model to the view
    view.show()
    sys.exit(app.exec_())

0 个答案:

没有答案