resetItems PyQt如何重新加载临时凭证

2024-06-16 10:25:11 发布

您现在位置:Python中文网/ 问答频道 /正文

这只是我剧本的一部分。当数据进入时,我无法重新加载脚本(不停止它)文件.txt改变。在

class StockListModel(QtCore.QAbstractListModel):
        def __init__(self, stockdata = [], parent = None):
            QtCore.QAbstractListModel.__init__(self, parent)
            self.stockdata = stockdata
            self.file_check = QtCore.QFileSystemWatcher(['/home/user/Desktop/file.txt'])
            self.file_check.fileChanged.connect(self.resetItems)

        def getItems(self):
           return stockdata

        @QtCore.pyqtSlot(str)
        def resetItems(self, path):
           self.beginResetModel()
           self.stockdata = self.stockdata    #without this and next line I have the same
           self.endResetModel()          #error

if __name__ == '__main__':
        app = QtGui.QApplication(sys.argv)
        app.setStyle("plastique")

        tableView = QtGui.QTableView()      
        tableView.show()

        a = os.popen("cat /home/user/Desktop/file.txt")
        a = a.read()
        time_variable = QtCore.QString("%s"%a)

        model = StockListModel([time_variable])

        tableView.setModel(model)
        sys.exit(app.exec_())

运行此脚本并更新文件时,出现错误: AttributeError:“QString”对象没有属性“beginResetModel”

我应该更改什么来刷新数据?在


Tags: 文件数据selftxt脚本appinitdef
1条回答
网友
1楼 · 发布于 2024-06-16 10:25:11

您得到错误是因为您的QFileSystemWatcheremits a stringfileChanged信号,它正被resetItems()接收,它需要一个{}的实例。未传递self引用,因为file_check已定义为静态的,并且未绑定到特定实例。在

尝试将file_check作为实例变量移动到构造函数中,并修改resetItems()以接受fileChanged发出的字符串参数。在

编辑:为清晰起见,添加了代码

施工单位:

    def __init__(self, stockdata = [], parent = None):
        QtCore.QAbstractListModel.__init__(self, parent)
        self.stockdata = stockdata
        self.file_check = QtCore.QFileSystemWatcher(['/home/user/Desktop/file.txt'])
        self.file_check.fileChanged.connect(self.resetItems)

重置项目:

^{pr2}$

相关问题 更多 >