0

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。

4

1 回答 1

0

AQFile不提供监视文件内容更改的机制。您需要使用QFileSystemWatcher来获得有关文件更改的通知。您还需要智能地处理您可能会在文件末尾读取部分行的事实。

如果使用信号,请确保提供文件(而不是文件夹)的路径fileChanged,并且addPath返回 True。

您可以尝试同时监视文件路径和目录路径——在某些系统上,一个可以工作,而另一个会失败。

如果您使用的是 OS X 以外的 Unices,您可能只是关闭了文件系统通知守护进程(如果有必要),或者关闭了给定文件系统的通知等。如您所见,根据工作文件系统观察程序充满了危险。如果观察者失败,您必须轮询文件大小和修改时间(不经常!)。

附加到AQTextEdit时性能相当差。您应该使用一个模型和一个QListView代替,但有一些警告

于 2014-03-06T22:26:37.667 回答