beginResetModel() - 不起作用

时间:2014-06-25 13:26:16

标签: python linux pyqt

当脚本运行时,我正在更改文件的内容。 在centos上我有这样的错误:

  

AttributeError:'list'对象没有属性   'beginResetModel'

在Ubuntu上我没有任何错误,但srcipt没有重新加载数据。 在这种情况下,它可能与beginResetModel有关吗?

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 self.stockdata

        @QtCore.pyqtSlot(str)
        def resetItems(self, path):
           self.beginResetModel()
           self.stockdata = self.stockdata
           self.endResetModel()

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

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

        file = open('/home/user/Desktop/file.txt')
        a = file.readline()             # ------> type STRING
        time_variable = QtCore.QString("%s"%a)

        model = StockListModel([time_variable])

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

1 个答案:

答案 0 :(得分:0)

重置模型时,您不会更改数据:

self.stockdata = self.stockdata

此行需要将self.stockdata设置为更新后的值。大概你想要从正在观看的文件中读取更改。