将按钮释放视为键盘中断提示



我在Python 3中使用tkinter来创建一个程序,我被卡住了…我有一个由按键触发的无限循环:

def task13():
    while True:
        #do stuff
...
button13 = Button(root, width=25, text="13", command=task13)
goButton.pack(side=LEFT,anchor="n")

如何在释放按钮时终止task13 ?是否有"键盘中断"代码,或者我可以修改循环?

没有办法中断正在运行的函数。但是,您可以在按钮的<ButtonRelease-1>上放置一个绑定,并在该绑定中设置一个标志。然后,在task13中,您可以检查循环顶部的标志。您还需要在<ButtonPress-1>上绑定以启动循环,因为command绑定到按钮小部件上的鼠标按钮的释放。

只有在循环中服务事件时才会起作用。如果#do stuff阻塞了事件循环,那么除了在单独的线程或进程中运行该代码之外,您无能为力。

按钮有"<Button-1><ButtonRelease-1>事件:

from tkinter import *
def press(*args):
    print('press')
    global pressed
    pressed = True
    master.after(0, loop)
def release(*args):
    print('release')
    global pressed
    pressed = False
def loop():
    if pressed:
        print('loop')
        # Infinite loop without delay is bad idea.
        master.after(250, loop)
master = Tk()
pressed = False
b = Button(master, text="OK")
b.bind("<Button-1>", press)
b.bind("<ButtonRelease-1>", release)
b.pack()
mainloop()

相关内容

  • 没有找到相关文章

最新更新