目前我正在创建一个小型GUI,引导用户完成一件设备的配置。运行程序,选择所需的配置,然后它会将您发送到另一个窗口,在该窗口中,您可以获得有关如何设置设备的说明,以便从计算机运行测试(通过串行)。虽然之前有工作,但有些事情发生了变化,我无法弄清楚是什么。这是我的窗口代码。所有文件路径都是正确的。运行串行配置的程序有效。我已经将问题缩小到不会在mainloop()之外运行测试的地方。选择运行配置时,将弹出相关的窗口,同时它应该开始运行配置。 “SLICE_SETUP”是实际的配置类,“SLICE”是测试本身。
import sys
from Tkinter import *
from slice_setup import SLICE_SETUP
obj_rcs = SLICE_SETUP()
class pleasewait:
def pleasewaitbox(self):
pGui = Tk()
pGui.geometry("300x100+400+250")
pGui.title("RSAM BCT")
plabel = Label(pGui, text= "REDCOM SLICE", fg="red").pack()
plabel2 = Label(pGui, text= "BCT - Basic Configuration Test", fg= "red").pack()
plabel3 = Label(pGui, text= "Please wait...", fg= "black").place(x = 120, y = 50)
plabel3 = Label(pGui, text= "Estimated time: 3 min 6 sec",
fg= "black").place(x = 80, y = 70)
pGui.mainloop()
obj_rcs.SLICE()
obj_wait = pleasewait()
obj_wait.pleasewaitbox()
答案 0 :(得分:1)
除非mainloop()
在自己的线程/进程中运行,否则在主窗口被销毁之前,您将无法执行任何操作。见https://stackoverflow.com/a/8685760/138772
我的建议是将一个方法绑定到Activate
的{{1}}事件,该事件将调用pGui
然后从gui中自我绑定,这样它就不会在每次窗口运行焦点改变了。 (在obj_rcs.SLICE()
类中使用标志变量也可以正常工作。)