dam*_*spy -1 python tkinter ttk
我在tkinter/ttk中开发了一个用户界面,它使用标准的ttk.Button小部件来使用'command'参数调用各种函数.问题是,如果用户双击按钮,则会调用该函数两次.这会导致各种各样的问题.双击事件没有绑定任何东西,所以有没有办法禁用第二次单击?我在函数定义的开头尝试了time.sleep()和after(),但是我还没有找到使其工作的方法.我是否需要手动将每个函数绑定到每个按钮的单击并重新分配事件处理程序?任何简单的方法都可以忽略双击?
只需告诉按钮的回调功能(它command)禁用按钮,然后在短暂的一段时间(此处200ms)后恢复正常.
def callback(self):
self.my_button.config(state=tk.DISABLED)
self.root.after(200, lambda: self.my_button.config(state=tk.NORMAL))
# other actions
Run Code Online (Sandbox Code Playgroud)
正如Bryan所指出的那样,只要等到功能结束就更好更简单(除非你只是想防止意外双击,并且可以在它必须完成之前再次调用该功能):
def callback(self):
self.my_button.config(state=tk.DISABLED)
# other actions
self.my_button.config(state=tk.NORMAL)
Run Code Online (Sandbox Code Playgroud)
此示例代码假定导入import tkinter as tk,OO应用程序结构,调用的按钮,调用self.my_button的回调函数self.callback和调用的根对象self.root.
| 归档时间: |
|
| 查看次数: |
1191 次 |
| 最近记录: |