gpt4 book ai didi

python - Spyder 和 wxPython 之间的冲突?

转载 作者:太空狗 更新时间:2023-10-30 02:33:54 30 4
gpt4 key购买 nike

我是 wxPython 的新手。从一个简单的教程(http://wiki.wxpython.org/wxPython%20by%20Example)开始,似乎Spyder和wxPython之间存在冲突。我可以运行以下脚本一次(在 IPython 控制台中),使用:

runfile(r'C:\Python27\Scripts\test\test.py')

其中包含:

import wx

class Frame(wx.Frame):
def __init__(self, title):
wx.Frame.__init__(self, None, title=title, size=(350,200))

app = wx.App(redirect=True)
top = Frame("Hello World")
top.Show()
app.MainLoop()

但是第二次运行时,出现如下错误:

Traceback (most recent call last):
File "<ipython console>", line 1, in <module>
File "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 493, in runfile
execfile(filename, namespace)
File "C:\Python27\Scripts\test\test.py", line 14, in <module>
top = Frame("Hello World")
File "C:\Python27\Scripts\test\test.py", line 11, in __init__
wx.Frame.__init__(self, None, title=title, size=(350,200))
File "C:\Python27\lib\site-packages\wx-2.8-msw-unicode\wx\_windows.py", line 505, in __init__
_windows_.Frame_swiginit(self,_windows_.new_Frame(*args, **kwargs))
PyNoAppError: The wx.App object must be created first!

不是很懂,但显然是因为spyder是用wxPython写的,和app.MainLoop()有冲突

有人可以确认和/或解释更多吗?

非常感谢,

帕特里克

最佳答案

我怀疑这是因为您试图在交互式解释器 session 中运行该示例。该示例实际上是一个带有事件循环的 GUI 应用程序,当您在同一个交互式 session 中重复执行它时,它不会表现良好,因为上次运行的前一个应用程序的清理不会完全发生。正如您所经历的,它将运行一次,但随后的尝试失败了。这样的例子绝对应该在它自己的专用解释器中运行,当 GUI 关闭时,它可以完全退出。

在 Spyder 中,您可以将脚本配置为在专用的独立解释器中运行,而无需在单独的外部控制台中手动运行。在 Spyder 编辑器中打开文件,按 F6 打开“运行设置”对话框,然后选择“在新的专用 Python 解释器中执行”单选按钮。现在点击运行。使用 F5 的后续运行将记住此配置设置,并且您将在每次重复执行时在它自己的解释器中运行您的示例。

关于python - Spyder 和 wxPython 之间的冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11210081/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com