我的代码很简单,但我不断收到以下错误。我研究了错误,它几乎说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对象!
答案 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)
关键是使用运行Python代码的编辑器/ IDE 在外部进程中编辑,而不是在同一个进程中运行 作为编辑本身的过程。
答案 3 :(得分:0)
尝试关闭终端机/控制台并重新运行它(如果有此选项)。 当我在Spyder(3.3.2)中得到了与上面类似的代码时,得到了按摩。
答案 4 :(得分:-1)
我有同样的问题,但是:
del app
关闭窗口并停止内核,所以它没有太大帮助
我发现这对我有用:
app=[]; app = wx.App(None)
退出应用程序= []部分,程序运行一次,但第二次运行停止并给出“必须首先创建wx.app对象”错误,但不是第二次运行
希望这对其他人有用。
每