tkinter在mainloop()之后没有运行

时间:2013-06-13 17:32:24

标签: tkinter

目前我正在创建一个小型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()

1 个答案:

答案 0 :(得分:1)

除非mainloop()在自己的线程/进程中运行,否则在主窗口被销毁之前,您将无法执行任何操作。见https://stackoverflow.com/a/8685760/138772

我的建议是将一个方法绑定到Activate的{​​{1}}事件,该事件将调用pGui然后从gui中自我绑定,这样它就不会在每次窗口运行焦点改变了。 (在obj_rcs.SLICE()类中使用标志变量也可以正常工作。)