2016-04-18 18 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"の初期設定をスーパーに読みましたが、それを成功させることはできません。また、これが私の問題を解決するかどうかもわかりません。

おかげで、懸命のnoobに

答えて

1

自己が独自のクラスではないこと、それはWXクラスではありません...あなたはそれがwx.Dialogの属性を持っているしたい場合は、wx.Dialog

から継承する必要がありますMyDialogのMethodeの何のインスタンスを持っていない:

最も簡単な解決策は、直前けどはAttributeErrorのようになって何かがあることを試みたダイアログ

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

Iのhabeのあなたの実際のインスタンスであるように思われるself.Dialogに近い呼び出すことが考えられます'ダイアログ' – fteinz

+0

あなたが持っているエラーはありません...あなたが実際のエラーメッセージを入力する必要がある場合は助けが必要な場合... –

+0

私は家にいなかったため申し訳ありません。あなたが正しいことを申し訳ありません。私はあなたのようにテストした(私はそれを前に試してみたと思った)、今は思ったよりもうまくいっている。ありがとう – fteinz

関連する問題