我已经创建了一个按钮。我想,如果有人重复点击它将只执行一次。我禁用了按钮3秒钟,但当按钮正常时,它会执行每次点击的顺序。我希望在禁用状态下,单击将被忽略。怎么做
from Tkinter import *
import Tkinter,MySQLdb,tkFont,datetime,time,tkMessageBox,socket,os
from datetime import datetime
class Reception_Qm(Tkinter.Tk):
def __init__(self,parent):
Tkinter.Tk.__init__(self,parent)
self.parent = parent
self.initialize()
def initialize(self):
self.grid()
self.button1 = Tkinter.Button(self, text = my_button,bg="blue",activebackground="yellow",\
width=18,font=('Sans','30','bold'),relief=RIDGE,\
command = lambda: self.print_token('hello'),fg="white",height=1)
self.button1.grid(column=0,row=0,sticky='NSEW')
def print_token(self,catagory):
print "hello"
self.button1.flash()
self.button1.config(state=DISABLED)
time.sleep(3)
self.button1.config(state=NORMAL)
if __name__ == "__main__":
window = Reception_Qm(None)
window.title("Test App")
window.mainloop()
如果按钮在禁用状态下也被按下,当按钮进入正常状态时,它将进入打印令牌功能。我只想忽略点击。我想忽略持续时间小于3秒的点击
你不能在事件处理程序中间做这样的
time.sleep
。如果你这样做了,你就不会回到主循环,这意味着tkinter不能处理任何事件,甚至你的按钮禁用事件当然,当您最终返回时,tkinter可以开始处理一些事情,但是在那一点上,它有一个按钮enable,在按钮disable之后立即排队,所以按钮只被禁用了很小的一小部分时间
您需要做的是将函数的后半部分拆分为一个单独的函数,让tkinter在3秒内为您运行该函数,然后立即返回:
相关问题 更多 >
编程相关推荐