我如何 运行 tkinter 和 watchdog 在一起
how can i run both tkinter and watchdog together
所以简而言之,我想做的是让一个带有 LED 的 Arduino 和一个图形用户界面显示存储在一个不断更新的 json 文件中的信息(它来自一个名为 Elite Dangerous 的游戏)。
所以我正在使用看门狗查看文件何时更新,然后读取新信息。然后我想使用 tkinter 来显示信息,例如:boxes changing color
但是问题是,当我使用 tkinter 时,mainloop() 停止了 运行 中的其余代码(我假设这是因为它是一个无限循环)。
我对编程还很陌生,所以请保持礼貌:P
我对这个网站也很陌生,所以如果缺少任何信息请告诉我
def main(file_path=None):
watched_dir = os.path.split(file_path)[0]
print ('watched_dir = {watched_dir}'.format(watched_dir=watched_dir)) #prints the directory
patterns = [file_path]
print ('patterns = {patterns}'.format(patterns=','.join(patterns))) #prints the file with path
event_handler = MyEventHandler(patterns=patterns)
#creating the observer and watching the file
observer = Observer()
observer.schedule(event_handler, watched_dir, recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
下面是 运行 tkinter
和 watchdog
的例子:
import tkinter as tk
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class MyEventHandler(FileSystemEventHandler):
def __init__(self, callback):
super().__init__()
self.callback = callback
def on_modified(self, event):
self.callback(event.src_path)
def on_modified(target):
txtbox.insert('end', target+' is modified\n')
event_handler = MyEventHandler(on_modified)
observer = Observer()
observer.schedule(event_handler, '.', recursive=False)
root = tk.Tk()
txtbox = tk.Text(root, width=40, height=20)
txtbox.pack()
observer.start()
root.mainloop()
observer.stop()
observer.join()
所以简而言之,我想做的是让一个带有 LED 的 Arduino 和一个图形用户界面显示存储在一个不断更新的 json 文件中的信息(它来自一个名为 Elite Dangerous 的游戏)。
所以我正在使用看门狗查看文件何时更新,然后读取新信息。然后我想使用 tkinter 来显示信息,例如:boxes changing color
但是问题是,当我使用 tkinter 时,mainloop() 停止了 运行 中的其余代码(我假设这是因为它是一个无限循环)。 我对编程还很陌生,所以请保持礼貌:P 我对这个网站也很陌生,所以如果缺少任何信息请告诉我
def main(file_path=None):
watched_dir = os.path.split(file_path)[0]
print ('watched_dir = {watched_dir}'.format(watched_dir=watched_dir)) #prints the directory
patterns = [file_path]
print ('patterns = {patterns}'.format(patterns=','.join(patterns))) #prints the file with path
event_handler = MyEventHandler(patterns=patterns)
#creating the observer and watching the file
observer = Observer()
observer.schedule(event_handler, watched_dir, recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
下面是 运行 tkinter
和 watchdog
的例子:
import tkinter as tk
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class MyEventHandler(FileSystemEventHandler):
def __init__(self, callback):
super().__init__()
self.callback = callback
def on_modified(self, event):
self.callback(event.src_path)
def on_modified(target):
txtbox.insert('end', target+' is modified\n')
event_handler = MyEventHandler(on_modified)
observer = Observer()
observer.schedule(event_handler, '.', recursive=False)
root = tk.Tk()
txtbox = tk.Text(root, width=40, height=20)
txtbox.pack()
observer.start()
root.mainloop()
observer.stop()
observer.join()