Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x TKinter按钮避免双击_Python 3.x_Tkinter - Fatal编程技术网

Python 3.x TKinter按钮避免双击

Python 3.x TKinter按钮避免双击,python-3.x,tkinter,Python 3.x,Tkinter,我有一个脚本,在用户单击“仅一次”开始测试按钮后启用电源,紧接着,我禁用按钮以避免“双击”,但是,我注意到,如果用户执行“双击”,我的应用程序将启动第二个操作 def starttest(): Button(main, text="START TEST", font=("Tahoma", 21), height=1, width=24, command=starttest, state=DISABLED).place(x=55,y=40) PS = serial.Ser

我有一个脚本,在用户单击“仅一次”开始测试按钮后启用电源,紧接着,我禁用按钮以避免“双击”,但是,我注意到,如果用户执行“双击”,我的应用程序将启动第二个操作

def starttest():
    Button(main, text="START TEST", font=("Tahoma", 21), height=1, width=24, 
    command=starttest, state=DISABLED).place(x=55,y=40)
    PS = serial.Serial('COM1', 9600, timeout=.1)
    ##my code here ... 

有人知道我应该怎么做才能防止这种情况发生吗?

每次通过按固有按钮调用
starttest()
函数时,都会创建一个新的按钮小部件:这就是为什么看起来您可以无限期地点击错误的“相同”按钮

您应该在程序中的其他位置创建该按钮:

...
power_supply_btn = Button(... text="START TEST", command=starttest ...)
power_supply_btn.place(x=55,y=40)
...
然后使用以下函数在
starttest()
回调中配置该按钮的状态:

def starttest():
   global power_supply_btn
   power_supply_btn.configure(state=DISABLED)

这看起来不像是禁用按钮,这看起来像是在现有按钮的基础上创建一个新的禁用按钮,该按钮仍然可以处理任何排队的鼠标单击。保存对原始按钮的引用,将其状态改为禁用。感谢@Billal BEGUERADJ它可以工作,我只是有一个注释,命令应该是:def starttest():global power\u supply\u btn power\u supply\u btn.config(state=DISABLED)“.config.configure”改为“不客气。
config()
configure()
做这件事。非常感谢您,它工作正常(我对回复中的延迟表示歉意)。我的代码工作正常。感谢所有人的帮助和支持。