当前位置: 首页 > 知识库问答 >
问题:

我怎样才能同时运行tkinter和watchdog

公西星海
2023-03-14

所以简而言之,我想做的是让一个带有发光二极管和图形用户界面的arduino显示存储在一个不断更新的json文件中的信息(它来自一个叫做精英危险的游戏)。

所以我使用看门狗来查看文件何时更新,然后读取新信息。然后我想使用tkinter来显示信息,例如:盒子改变颜色

但是问题是,当我使用tkinter时,mainloop()会停止其余代码的运行(我假设这是因为它是一个无限循环)。我对编程还是很陌生的,所以请成为genlte: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()

共有1个答案

贺高杰
2023-03-14

下面是一起运行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()
 类似资料:
  • 场景z:Zaloguj u cinytkownika który zna swój login i have lo 我导入了所有注释: 导入cucumber.api.java.pl.Jez Eli; 导入cucumber.api.java.pl.oraz; 导入cucumber.api.java.pl.wtedy; 导入cucumber.api.java.pl.zakladaja c; 我的pom

  • 问题内容: 这是一个简单的ArrayList排序程序: 我期望该程序的输出为: 但是当我运行该程序时,我得到的输出为: 为什么会这样?如何使ArrayList进行排序,如预期输出所示? 问题答案: 您可以编写一个自定义比较器:

  • 有什么方法可以简化这段代码吗?我正好有一个白色的一块,想要得到它的位置 代码: 瓦片类: 件类:

  • 问题内容: 我试图“ stopPropagation”以防止单击li内的元素(链接)时关闭TwitterBootstrap导航栏下拉菜单。 在Angular中,看起来像指令是执行此操作的地方?所以我有: …但是该方法不属于元素: 我把指令与 有什么建议么? 问题答案: “当前一些指令(即ng:click)停止事件传播。这阻止了与依赖于捕获此类事件的其他框架的互操作性。” - …并且能够在没有指令的

  • 所以我试图将重力添加到4个UIButton,但它们没有下降,我将此代码添加到视图中并加载,我不知道为什么这不起作用。这是代码: 我的按钮有红色按钮、绿色按钮、蓝色按钮和相机按钮,我也应用了秋天的方向,但当我运行应用程序时,它们只是静态的。那么,有没有可能给这些按钮增加重力呢?

  • 我正在阅读Kafka的文档,注意到下面一行: 但是,请注意,使用者组中的使用者实例不能多于分区。 嗯。如何自动缩放? 这是Kafka的限制但是...如果我理解这是如何工作的,那么两个用户组都将从一个分区(例如msg.hi)中提取,并使用它们自己的偏移量,因此两个用户组都不知道另一个分区--这意味着消息可能会被传递两次! 我怎样才能达到我在兔子设计中所拥有的Kafka的能力,并且仍然保持行为的“队列