如何实现事件等待?以Tkinter按钮点击后执行后续代码为例
Tkinter等待按钮点击后执行后续代码
Tkinter是事件驱动框架,不能用普通的阻塞等待逻辑(比如time.sleep),否则会导致界面卡死。正确的做法是把需要执行的后续代码绑定到按钮的回调函数里,当用户点击按钮时自动触发。
简单实现
直接把后续代码放到按钮绑定的function里:
from tkinter import * def function(): print("Yay you pressed a button!") root = Tk() btn1 = Button(root, text="点击我", command=function) btn1.pack() # 必须调用pack/grid/place让按钮显示 root.mainloop()
复杂逻辑拆分
如果后续代码较多,建议单独封装成函数,再在回调里调用:
from tkinter import * def handle_after_click(): print("Yay you pressed a button!") # 这里可以添加更多后续要执行的代码 def function(): handle_after_click() root = Tk() btn1 = Button(root, text="点击我", command=function) btn1.pack() root.mainloop()
注意:不要尝试用循环等待某个变量变化的方式,这会阻塞Tkinter的事件循环,导致界面失去响应。事件驱动是Tkinter的核心逻辑,所有用户交互都要通过绑定回调函数来处理。
内容的提问来源于stack exchange,提问作者Keyboard's_Slave
相关产品推荐
相关产品推荐

