0

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

1 回答 1

1

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

我的建议是将一个方法绑定到将调用的Activate事件,然后从 gui 中解绑它自己,这样它就不会在每次更改窗口焦点时运行。(在你的类中使用标志变量也可以。)pGuiobj_rcs.SLICE()pleasewait

于 2013-06-13T17:42:24.697 回答