簡體   English   中英

Python調用父類屬性

[英]Python call parent class attribute

我在Python中有一些經驗,特別是在EventGhost的wxpython中,但是我對類有一些普遍的問題。 我環顧四周,嘗試了很多,但沒有成功。

我的問題是我想從“ 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”的初始化的文章,但是這樣做沒有成功,也不知道這樣做是否可以解決我的問題。

謝謝,對菜鳥不要那么難

self是您自己的類,它不是wx類...如果您希望它具有wx.Dialog的屬性,則需要從wx.Dialog繼承

最簡單的解決方案可能是在self.Dialog上調用close,這似乎是您實際的對話框實例

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM