0

我曾经使用 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,但这并不好玩。

4

1 回答 1

0

我不久前发现了答案,但直到现在我才回过头来发布答案。本质上,Pyzo 本身有一个设置试图检测 GUI。将该设置从自动切换到无解决了问题。

于 2017-04-29T14:57:51.700 回答