在pyqt中运行看门狗文件系统监视

时间:2013-01-24 13:13:57

标签: python-2.7 pyqt watchdog

我有一个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_())

如何将watchdog与pyqt集成以观察文件系统的变化。

1 个答案:

答案 0 :(得分:2)

watchdog.observers.Observer继承自threading.Thread,因此实际检查是在您致电observer.start()时开始的主题中完成的。

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

observer.start()
status = app.exec_()
observer.stop()
observer.join()
sys.exit(status)