Python 必须首先创建wx.app对象
我的代码非常简单,但我一直在下面看到错误。我研究了这个错误,它几乎说IDLE和我自己的GUI互相搞砸了,但我真的不知道如何避免它。我的意思是,如果我只是单击GUI的.py文件而没有打开IDLE,我会得到同样的错误 有什么想法吗 Python 2.7 Windows XPPython 必须首先创建wx.app对象,python,user-interface,wxpython,Python,User Interface,Wxpython,我的代码非常简单,但我一直在下面看到错误。我研究了这个错误,它几乎说IDLE和我自己的GUI互相搞砸了,但我真的不知道如何避免它。我的意思是,如果我只是单击GUI的.py文件而没有打开IDLE,我会得到同样的错误 有什么想法吗 Python 2.7 Windows XP import wx class applicationName(wx.Frame): def __init__(self, parent, id): wx.Frame.__init__(self, p
import wx
class applicationName(wx.Frame):
def __init__(self, parent, id):
wx.Frame.__init__(self, parent, id, 'Title', size=(300,200))
panel = wx.Panel(self)
box = wx.TextEntryDialog(None, "How old are you?", "Title", "default text")
if box.ShowModal() == wx.ID_OK:
answer = box.GetValue()
if __name__ =='__main__':
app = wx.PySimpleApp()
frame = applicationName(parent=None, id=-1)
frame.Show()
app.MainLoop()
错误: Pynapperror:必须首先创建wx.App对象
您的
\uuuu init\uuu
函数未正确缩进。应该是
def __init__(self, parent, id):
wx.Frame.__init__(self, parent, id, 'Title', size=(300,200))
panel = wx.Panel(self)
box = wx.TextEntryDialog(None, "How old are you?", "Title", "default text")
if box.ShowModal() == wx.ID_OK:
answer = box.GetValue()
引自:
关键是使用一个编辑器/IDE来运行您正在编写的Python代码
在外部进程中编辑,而不是在同一进程中运行
进程作为编辑器本身
我猜您在第二次调试程序时遇到了这个问题 您可以在代码末尾添加该行
del app
我希望它能帮助您。尝试关闭终端/控制台并重新运行它(如果选项可用)。
当我在Spyder(3.3.2)中运行与上面类似的代码时,它为我工作。我也有同样的问题,但是:
del app
关闭窗口并停止内核,因此这没有多大帮助
我发现这对我很有用:
app=[]; app = wx.App(None)
如果没有app=[]-部分,程序将运行一次,但当它停止并给出“wx.app对象必须首先创建”错误时,程序不会运行第二次
希望这对其他人有用
这确实不是一个有效的答案。我运行了类似的代码。第一次工作,现在我得到了相同的错误
wx.App object必须首先创建
,实际上,在Spyder中运行wxWidgets helloworld2.py示例时出现了这个错误。将文件配置设置为“在专用控制台中执行”使其正常工作。谢谢,我遇到了相同的问题(仅在第二次运行代码时),您解决了它:-)我认为这是正确的答案,因为选中的答案没有帮助,但这个答案确实有帮助。