WXPYTHON(NameError:全局名称'myFrame'未定义

时间:2016-10-12 03:21:00

标签: python-2.7 wxpython

以下是错误的屏幕截图。为什么会这样?

enter image description here

2 个答案:

答案 0 :(得分:0)

我无法弄清楚您是如何运行该代码的,因为if __name__ == '__main__'main方法在myFrame类中缩进。尝试缩进它我的意思是你的代码结束应该是:

def main():
    app = myApp()
    app.MainLoop()

if __name__ == '__main__':
    main() 

另外,您的命名约定不是pythonic。 Python recommends UpperCamelCase for class names, CAPITALIZED_WITH_UNDERSCORES for constants, and lowercase_separated_by_underscores for other names.

答案 1 :(得分:0)

这可能是你想要实现的目标。虽然在发布到StackOverflow时,您应该将代码剪切并粘贴到问题中,而不是将其放在链接中,尤其是作为图像的链接。 如果你让他们很难这样做,很少有人会努力提供帮助。

import wx

class MyApp(wx.App):
    def OnInit(self):
        self.frame = MyFrame()
        self.SetTopWindow(self.frame)
        return True

class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self,None, title="Window", pos = (100,150), size =(250,200))
        menu = wx.Menu()
        menu.Append(1,'&About')
        menu.AppendSeparator()
        menu.Append(2,'E&xit')
        menuBar = wx.MenuBar()
        menuBar.Append(menu,'&File')
        self.Bind(wx.EVT_MENU, self.OnAbout, id=1)
        self.Bind(wx.EVT_MENU, self.OnExit, id=2)
        self.SetMenuBar(menuBar)
        self.Layout()
        self.Show()

    def OnExit(self, evt):
        self.Destroy()

    def OnAbout(self, evt):
        print("This is MyFrame")

if __name__ == "__main__":
    app = MyApp()
    app.MainLoop()