如何阻止Pyzo调用mainloop?

时间:2016-07-29 03:31:31

标签: python tkinter pyzo

我曾经使用Python的交互式编辑器,然后我“升级”到Pyzo(因为IEP被合并到Pyzo)。我的一个程序使用tkinter来创建GUI。以前的代码运行得很好:我将文件作为脚本运行,然后,在解释器中,我将调用main,它将启动应用程序。

代码框架看起来像这样。

def main():
    class Application(tk.Frame):
        def __init__(self, master=None):
            # a bunch of stuff
        # several more methods here

    front=Application()
    front.mainloop()
# then I can either call main in the interpreter, or I can add this:
# the name==main part is to handle some multiprocessing that occurs within the application class
if __name__=="__main__":
    main()

这在IEP中很有魅力。但是,在Pyzo中,main()永远不会启动,或者更确切地说,它会启动,但gui永远不会出现,它不会让我做任何事情。相反,我收到此消息:注意:GUI事件循环已在pyzo内核中运行。请注意,进入主循环的功能不会阻止。

当我使用CPython 3或PyPy解释器时,在Pyzo中会出现此消息,但是当我使用Anaconda 3时(实际上我需要使用PyPy,因为我正在做的工作计算成本很高)。

另一种选择是不使用Pyzo,但这并不好玩。

1 个答案:

答案 0 :(得分:0)

我刚才发现了答案,但直到现在我还没有回复发布答案。从本质上讲,Pyzo本身有一个设置,试图检测GUI。将该设置从auto切换为none可解决问题。