【发布时间】:2020-11-22 20:45:27
【问题描述】:
简而言之,我想做的是让一个带 LED 的 arduino 和一个 gui 显示存储在一个不断更新的 json 文件中的信息(它来自一个名为 Elite Dangerous 的游戏)。
所以我使用看门狗查看文件何时更新,然后读取新信息。然后我想使用 tkinter 来显示信息,例如:盒子改变颜色
但是问题是,当我使用 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()
【问题讨论】:
-
你可以这样做,但你必须小心一点。您需要通过线程将 GUI 和您的程序彼此分开。你可以让你的 GUI 读取一个文件,但你不能让你的 GUI 由 json 更新。你可能对这个stackoverflow.com/questions/26703502/threads-and-tkinter/…感兴趣
-
oki,我回家后会试着调查一下 :)
-
只是为了意识到这一点。我用 tkinter 和线程编写了一个小程序,但我讨厌它。解决这个问题可能需要一些时间。最美好的祝愿!
-
tkinter和watchdog(是pypi中的watchdog吗?)可以一起运行,因为watchdog实际上是作为线程运行的。 -
它是 pypi 看门狗是的。对不起,我将如何让 tkinter 与看门狗一起运行?我还尝试使 gui 成为上面评论中所述的自己的线程,但它仍然停止其余代码
标签: python loops tkinter python-watchdog