必须先创建wx.app对象

时间:2011-06-06 18:06:43

标签: python user-interface wxpython

我的代码很简单,但我不断收到以下错误。我研究了错误,它几乎说IDLE和我自己的GUI相互搞砸,但我真的不知道如何避免它。我的意思是,如果我只是在没有IDLE打开的情况下点击我的GUI的.py文件,我会得到同样的错误。

有什么想法吗?

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()

错误:

PyNoAppError:必须首先创建wx.App对象!


5 个答案:

答案 0 :(得分:6)

我猜你第二次调试你的程序时遇到了这个问题。

您可以在代码末尾添加该行。

del app

我希望它可以帮到你。

答案 1 :(得分:4)

您的__init__功能没有正确缩进。它应该是

 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()

答案 2 :(得分:2)

引自:http://wxpython-users.1045709.n5.nabble.com/PyNoAppError-The-wx-App-object-must-be-created-first-td2362821.html

  

关键是使用运行Python代码的编辑器/ IDE   在外部进程中编辑,而不是在同一个进程中运行   作为编辑本身的过程。

答案 3 :(得分:0)

尝试关闭终端机/控制台并重新运行它(如果有此选项)。 当我在Spyder(3.3.2)中得到了与上面类似的代码时,得到了按摩。

答案 4 :(得分:-1)

我有同样的问题,但是:

del app

关闭窗口并停止内核,所以它没有太大帮助

我发现这对我有用:

app=[]; app = wx.App(None)

退出应用程序= []部分,程序运行一次,但第二次运行停止并给出“必须首先创建wx.app对象”错误,但不是第二次运行

希望这对其他人有用。