2012-12-17 38 views
0

任何人都可以幫我弄清楚我在做什麼錯我對GUI很少有經驗。 代碼:Python,wxPython錯誤

import wx 
    class bucky(wx.Frame): 
      #constructor 
     def __init__(self,parent,id): 
      wx.Frame.__init__(self,parent,id,'Frame aka window',size=(300,200)) 
      panel=wx.Panel(self) 
      button=wx.Button(panel,label="exit",pos=(130,10),size=(60,60)) 
      self.Bind(wx.EVT_BUTTON, self.closebutton,button) 
      self.Bind(wx.EVT_CLOSE, self.closewindow) 
     def closebutton(self,event): 
      self.close(True) 
     def closewindow(self,event): 
      self.Destroy() 
    if __name__=='__main__': 
     app=wx.PySimpleApp() 
     frame=bucky(parent=None,id=-1) 
     frame.Show() 
     app.MainLoop() 

錯誤:

PyNoAppError: The wx.App object must be created first! 

win32ui.error: Error in Command Message handler for command ID 36864, Code 0 
+2

請嘗試修復代碼的縮進,以便在文本編輯器中縮放所有內容 - 它在Python中非常重要。 – Marius

+0

我想你不想第三個參數在這裏'self.Bind(wx.EVT_BUTTON,self.closebutton,button)' –

+0

這是完整的追溯?它是否告訴你該錯誤來自哪條線? – Blair

回答

0

此代碼對我來說運行在Windows 7的wxPython 2.8.12.1和Python 2.6.6。你使用的是什麼操作系統和Python版本?當我在IDLE中運行我的代碼時,我經常看到這個錯誤消息。如果你這樣做,那麼不要。 Tkinter的主循環(這是IDLE所做的)會干擾其他GUI工具包的主循環​​。

在closebutton方法中存在一個問題,它調用一個不存在的「close」方法。

+0

感謝您的回答,我使用PythonWin 2.7.3 – user1908907

+0

嘗試從命令行運行腳本。 –