2016-04-18 33 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