2016-04-18 28 views
0

我在Python中做了一些經驗,特別是在EventGhost的wxpython中,但是我有一些類的問題。我曾經看過,並嘗試了很多,但沒有成功。Python調用父類的屬性

我的問題是,我想從一個按鈕來關閉在我的「MyDialog()」類我的GUI:

class ShowInputDialog(eg.ActionBase): 
    name = "Show Input Dialog" 
    description = "Show an input dialog that allows you to create an EventGhost event that you can then use to trigger AutoRemote messages or notifications" 
    def __call__(self): 
     class MyDialog(): 
      def __init__(self): 

       ########################Main Dialog########################### 
       no_sys_menu = wx.CLIP_CHILDREN | wx.STAY_ON_TOP | wx.FRAME_NO_TASKBAR | wx.NO_BORDER | wx.FRAME_SHAPED 
       self.Dialog = wx.Frame(None, wx.ID_ANY, "Hello World", style=no_sys_menu, size=(400,600)) 

       ########################Header########################### 
       Header = wx.Panel(self.Dialog, wx.ID_ANY, size=(400,600)) 
       HeaderSizer = wx.GridSizer(rows=1, cols=2, hgap=5, vgap=5) 

       HeaderSizer.Add(wx.StaticText(Header, label="Hello World"), flag=wx.ALIGN_CENTER_VERTICAL) 

       button = wx.Button(Header, label='close') 
       button.Bind(wx.EVT_BUTTON, self.close) 
       HeaderSizer.Add(button, 0, wx.ALIGN_RIGHT, 0) 

       Header.SetSizer(HeaderSizer) 

       upDownSizer = wx.BoxSizer(wx.VERTICAL) 
       upDownSizer.Add(Header, 0, flag=wx.EXPAND)    
       self.Dialog.SetSizer(upDownSizer) 

       self.Dialog.Fit() 
       self.Dialog.Show() 


      def close(self, event): 
       self.Close() 
       print "see you soon" 

     wx.CallAfter(MyDialog) 

如果我叫「關閉」從我的按鈕,我得到

AttributeError: MyDialog instance has no attribute 'Close' 

但如何調用「關閉」?我已閱讀了超級「MyDialog」的初始化,但沒有成功,也不知道這是否會清除我的問題。

謝謝,是不是很難一個小白

回答

1

自我是你自己的類,它不是一個WX類...如果你希望它有一個wx.Dialog你需要從wx.Dialog

繼承屬性

最簡單的解決方案可能是隻調用close上這似乎是一個對話框

def close(self, event): 
    self.Dialog.Close() 
    print "see you soon" 
+0

我HABE的實際情況嘗試,得到的東西像AttributeError的出現,但self.Dialog:MyDialog梅索德沒有實例'對話' – fteinz

+0

不,這不是你得到的錯誤...如果你需要幫助,你需要把你得到的實際錯誤信息... –

+0

對不起,我不在家。對不起,你說得對。我測試你喜歡你(我以爲我已經嘗試過),現在它的工作比想象的更好。謝謝 – fteinz