【发布时间】:2017-07-29 21:03:29
【问题描述】:
这只是我脚本的一部分。当 file.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'
我应该改变什么来刷新数据?
【问题讨论】:
-
除非您已全局定义它,否则 stockdata 变量在构造函数之外不存在,但您正尝试在 getItems 和 resetItems 函数中使用它。也许您的意思是 self.stockdata?
-
是的,我的意思是 getItems 中的 self.stockdata 但它仍然不能解决问题。