我试图遵循“wxPython in action”一书中的清单1.3。
我想我已经写了一份代码的正本:
"""Hello, wxPython! program."""
import wx
class Frame(wx.Frame):
"""Frame class that displays an image."""
def __init__(self,image, parent=None, id=-1, pos=wx.DefaultPosition, title='Hello, wxPython!'):
"""Create a Frame instance and display image."""
temp = image.ConvertToBitmap()
size = temp.GetWidth(), temp.GetHight()
wx.Frame.__init__(self, parent, id, title, pos, size)
self.bmp = wx.StaticBitmap(parent = self, bitmap = temp)
class App(wx.App):
"""Application class."""
def OnInit(self):
image = wx.Image('wxPython.jpg', wx.BITMAP_TYPE_JPEG)
self.frame = Frame(image)
self.frame.Show()
self.SetTopWindow(self.frame)
return True
def main():
app = App()
app.MainLoop()
if __name__ == '__main__':
main()...but在运行代码时会收到以下错误消息:
>>>
Traceback (most recent call last):
File "<string>", line 254, in run_nodebug
File "\\ri-file-2\cst$\image.py", line 28, in <module>
class App(wx.App):
File "\\ri-file-2\cst$\image.py", line 43, in App
main()
File "\\ri-file-2\cst$\image.py", line 39, in main
app = App()
NameError: global name 'App' is not defined
>>> 有人能事先弄清楚出什么事了吗?
发布于 2013-09-02 09:00:46
由于缩进错误,您的main子例程和if __name__ == '__main__'位现在属于App类。删除前面的四个空格:
...
self.SetTopWindow(self.frame)
return True
def main():
app = App()
app.MainLoop()
if __name__ == '__main__':
main()另外,确保程序文件夹中有wxPython.jpg文件,否则程序将无法运行。
PS。在这一行代码中:
size = temp.GetWidth(), temp.GetHight()它应该是GetHeight()而不是GetHight()。
https://stackoverflow.com/questions/18568583
复制相似问题