python - 当监视目录中的文件更改时,使用看门狗和 tkinter 打开 GUI 对话框
问题描述
我现在尝试了将近 24 小时,但我无法让它工作,也没有找到适合我用例的示例/解决方案..
我想做的是:
- 在文件更改上使用看门狗监视目录
- 在
on_modified
事件中打开一个 tkinter GUI
问题:Main-Thread
问题mainloop()
和我只找到总是从头开始直接呈现 GUI 的脚本示例。
错误:WARNING: NSWindow drag regions should only be invalidated on the Main Thread!
或
main thread is not in main loop tkinter
极简代码示例:
class PopupWindow:
def __init__(self, master):
self.master = master
self.frame = tk.Frame(self.master)
# code for input fields
# ...
self.frame.pack()
def set_user_input(self):
self.master.destroy()
self.master.quit()
class MainClass(FileSystemEventHandler):
def __init__(self):
print("Watching files in '/directory-to-be-watched' for changes...")
def run(self):
print("Starting script")
root = tk.Tk()
app = PopupWindow(root)
# read input values ...
root.mainloop()
root.destroy()
def on_modified(self, event):
self.run()
event_handler = MainClass()
observer = Observer()
observer.schedule(event_handler, "/directory-to-be-watched", recursive=False)
observer.start()
try:
while True:
time.sleep(10)
except KeyboardInterrupt:
observer.stop()
observer.join()
任何帮助将不胜感激,在此先感谢!
解决方案
推荐阅读
- reactjs - 是否可以为 React Native 中的动画分配一个值(id)?
- php - 如何将一个巨大的数组分成块?
- c# - 从全名中删除中间名,并以大写字母开头
- asp.net - 如何取消对文本框数据的任何更改
- netsuite - 是否有强制在 Netsuite 中打开/保存的自动化方法
- questasim - 设置 Questa Sim 双击编辑器
- delphi - 运行时粗体 ListView 项目在 Delphi Tokyo 中不起作用
- regex - Asp.net DataAnnotations Regex 根据之前的 Char 评估 Char
- javascript - 在 google maps JS API 中的数据功能点击事件上捕获修饰键(control/ctrl、shift、alt)
- angular - “OperatorFunction”类型上不存在属性“订阅”
'