stackoverflow中有一些“类似”的问题,但无法完全实现它们。在pyqt中,我试图将日志文件的输出(实时更新)传递到QTextEdit小部件中。我到目前为止的代码是:
file = QFile('tmp')
fh = file.open(QIODevice.ReadOnly)
stream = QTextStream(file)
while not stream.atEnd():
line = stream.readLine()
self.logTextEdit.append(line)
file.close()
处理当前内容,但不处理任何后续更改。理想情况下,Qt信号会提醒我读取另一行,因为它可用并直接写入TextEdit。
答案 0 :(得分:0)
QFile
没有提供监控文件内容变化的机制。您需要使用QFileSystemWatcher
来获取有关文件更改的通知。您还需要智能地处理可能会在文件末尾读取部分行的事实。
如果您使用fileChanged
信号,并确保addPath
返回True,请确保提供文件(不是文件夹)的路径。
您可以尝试同时监控文件路径和目录路径 - 在某些系统上,一个系统可以正常工作而另一个系统会失败。
如果您使用的是OS X以外的Unices,您可能只是关闭了文件系统通知守护程序(如果需要),或者关闭了给定文件系统等的通知。正如您所看到的,取决于工作文件系统观察程序充满了危险。如果观察者失败,你必须有一个回调轮询文件大小和修改时间(不经常!)。
附加到QTextEdit
的效果相当差。您应该使用模型和QListView
代替with some caveats。