我目前正在使用tkinter为实验室的倾斜台创建GUI。我编写了向上和向下按钮来控制针脚的开关,直到倾斜角度达到预设值(从一个通过Arduino连接的测斜仪中读取),然后关闭针脚。因此,与每个按钮相关联的函数会重复读取角度(直到达到正确的角度),但我还想在需要时关闭针脚。问题在于,当Up按钮相关的函数运行时,程序不会检查任何按钮按下事件。我该如何使暂停按钮打断函数?
我尝试使用线程库实现中断,但似乎当一个button()函数正在运行时,tkinter不允许其他代码运行。
我尝试使用线程库实现中断,但似乎当一个button()函数正在运行时,tkinter不允许其他代码运行。
import tkinter as tk
from tkinter import *
import RPi.GPIO as GPIO
import time
import serial
global read_serial
win = Tk()
def Up():
if read_serial < target:
global read_serial #read_serial is edited elsewhere not included here
GPIO.output(40,GPIO.HIGH)
time.sleep(.05)
read_serial=ser.readline().rstrtip().decode("utf-8")
read_serial=float(read_serial)
Up()
else:
GPIO.otuput(40,GPIO.LOW)
def Pause():
GPIO.output(40,GPIO.LOW)
upButton = Button(win,text='UP',command=Up)
pauseButton = Button(win,text='PAUSE',command=Pause)
upButton.grid(row=1)
pauseButton.grid(row=2)
win.mainloop()
我不想贴太多的代码,但如果我漏了任何关键部分,我可以包括更多内容。我希望在按暂停时中断Up(),但一旦我按下Up,程序会忽略任何输入,直到read_serial大于目标值。是否可能实现一个中断,以检查tkinter中的其他按钮按下?
.after()
调度的函数中逐个完成(如果活动仍未完成,则可以使用.after()
重新安排自己)。 - jasonharperwin.after(0, Up)
而不是直接调用Up()
。 - tobias_k