我如何 运行 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()

下面是 运行 tkinterwatchdog 的例子:

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()