1

我有一个 pyqt 小部件,它允许用户进行一些设置,然后将它们保存到 sqlite 数据库,此设置会影响看门狗,它使用以下代码检查文件系统的更改

 try:
    while True:
        time.sleep(1)
except KeyboardInterrupt:
    observer.stop()

以上内容不能放在 qwidget 应用程序代码中,因为它会阻止我尝试过的一些 pyqt 代码被执行:

 """ Some other code """
    app = QtGui.QApplication(sys.argv)
    ex = vdrive()
    trayIcon = SystemTrayIcon(QtGui.QIcon("app.xpm"), ex)
    trayIcon.show()
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    sys.exit(app.exec_())

我如何将看门狗与 pyqt 集成以观察文件系统的变化。

4

1 回答 1

2

该类watchdog.observers.Observer继承自threading.Thread,因此实际检查是在您调用时启动的线程中完成的observer.start()

除了让程序运行直到用户中断它之外,循环不做任何事情。您可以完全删除它并像往常一样运行 Qt 事件循环:

observer.start()
status = app.exec_()
observer.stop()
observer.join()
sys.exit(status)
于 2013-01-24T15:07:22.123 回答