如何在python tkinter中实现带while循环的多线程停止按钮

如何在python tkinter中实现带while循环的多线程停止按钮,python,multithreading,user-interface,tkinter,Python,Multithreading,User Interface,Tkinter,我正在编写一个应用程序来测量蹲下时的力量。它从arduino获取数据,然后有一种方法可以根据功率计算它。这个计算在while循环中。当我按下开始计算按钮时,我的应用程序冻结。我确信我必须在这里使用线程。我在寻找一些基本的例子,如何做到这一点,但没有任何成功。这是它的外观: 1.按钮: btn = tk.Button(self, text="Zacznij pomiary", command=lambda: methods.clicked(self.txtEntry, self

我正在编写一个应用程序来测量蹲下时的力量。它从arduino获取数据,然后有一种方法可以根据功率计算它。这个计算在while循环中。当我按下开始计算按钮时,我的应用程序冻结。我确信我必须在这里使用线程。我在寻找一些基本的例子,如何做到这一点,但没有任何成功。这是它的外观:

1.按钮:

btn = tk.Button(self, text="Zacznij pomiary", command=lambda: methods.clicked(self.txtEntry, self.txtEntry1, self.txtEntry2))
        btn.grid(column=0, row=3)
  • 方法:(读取数据是while循环中每毫秒计算一次的函数)
  • 我在这里寻找一些如何实现停止按钮的示例。

    单击:

        else:
            global keepGoing
            keepGoing = True
            threading.Thread( target=readData, args=(float(a.get(),float(b.get(),float(c.get()),daemon=True)
    
    在readData中:

        while keepGoing:
             ... do stuff ...
    
    然后,将停止按钮连接到:

    def onStopButton():
        global keepGoing
        keepGoing = False
    

    在这种情况下,当我实现btn时,我不需要线程?守护进程正在从systemd导入。守护进程?好的,这很好,非常感谢:)
    daemon=True
    意味着您不必等待它以
    t.join()结束。
    
    def onStopButton():
        global keepGoing
        keepGoing = False