Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 必须首先创建wx.app对象_Python_User Interface_Wxpython - Fatal编程技术网

Python 必须首先创建wx.app对象

Python 必须首先创建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

我的代码非常简单,但我一直在下面看到错误。我研究了这个错误,它几乎说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, 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示例时出现了这个错误。将文件配置设置为“在专用控制台中执行”使其正常工作。谢谢,我遇到了相同的问题(仅在第二次运行代码时),您解决了它:-)我认为这是正确的答案,因为选中的答案没有帮助,但这个答案确实有帮助。