繁体   English   中英

如何使用按钮执行命令并在命令结束前将其删除? Python/Tkinter

[英]How to execute a command with a button and delete it before the command ends ? Python / Tkinter

我有一个界面,其中有一个“开始”按钮。 它运行一个“主”命令,在那里它启动一个循环以在功率计上运行一些测量。 我希望能够在每次测量准备完成时单击“确定”按钮。 此按钮将取代“开始”按钮。

但是当我尝试销毁按钮( buttonStart.destroy() )然后运行命令main() ,该命令会执行但直到最后才删除按钮。 我试过使用 threading 包中的线程,但它并没有真正起作用。

如果有一种方法既可以销毁按钮又可以运行命令,我会非常感兴趣!

非常感谢

事件循环必须有机会处理事件,以便将窗口从屏幕上移除。

有几种方法可以做到这一点。 第一个是在任何小部件上调用update_idletasks方法。 这通常足以处理与小部件销毁相关的事件,尽管可能需要调用update来代替。 如果可能,应避免调用update 我的经验法则是从update_idletasks开始。 如果这不起作用,请切换到update或切换到使用after

def my_custom_function():
    startButton.destroy()
    root.upddate_idletasks()
    main()

第二种方法是通过afterafter_idle运行你的main函数。 这将使 tkinter 在启动main之前自然地处理所有挂起的事件。 我认为这是最好的方法。 我建议先尝试after_idle ,如果这不起作用,请after_idle延迟after切换到after

def my_custom_function():
    startButton.destroy()
    root.after_idle(main)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM