2017-02-08 6 views
0

折り畳み可能な枠について、今日学んだ。しかし、私はそれを働かせることはできません。私が得るエラーは:wxpython + CollapsiblePaneが機能しない

"TypeError: in method 'new_CollapsiblePane', expected argument 1 of type 'wxWindow *'" 

私は、折りたたみ可能なフィルタをクラスとして "main"クラスに含めようとしました。そして今、私はアイデアがありません。

これは私の最も最近のコードです:

class Main(wx.Panel): 
    def __init__(self, parent=None, id=-1, notify_channel=None, **kwargs): 
     wx.Panel.__init__(self, parent, id) 
     "some other stuff" 
     self.rightsizer.AddStretchSpacer(1) 
     self.rightsizer.Add(self.listsizer, 80, wx.EXPAND) 
     self.rightsizer.AddStretchSpacer(1) 

     self.sizer.AddStretchSpacer(1) 
     self.sizer.Add(CollapsibleFilter(self, label="Filter:"), 0, wx.EXPAND) 
     self.sizer.AddStretchSpacer(1) 
     self.sizer.Add(self.rightsizer, 50, wx.EXPAND) 
     self.sizer.AddStretchSpacer(2) 

     self.SetSizer(self.sizer) 
     self.sizer.Fit(self) 

class CollapsibleFilter(wx.CollapsiblePane): 

    def __init__(self, notify_channel, **kwargs): 
     wx.CollapsiblePane.__init__(self,wx.ID_ANY, **kwargs) 
     self.notify_channel = notify_channel 

     self.CollapsibleFilter=self.GetPane() 


     self.filter1 = FilterBox(self.CollapsibleFilter, notify_channel=self.notify_channel) 
     self.filter2 = FilterBox(self.CollapsibleFilter, notify_channel=self.notify_channel) 
     self.filter3 = FilterBox(self.CollapsibleFilter, notify_channel=self.notify_channel) 

     self.filter1.set_dropdown_items(browser_options.filterlist) 
     self.filter1.set_dropdown_default(browser_options.default_1) 
     self.filter2.set_dropdown_items(browser_options.filterlist) 
     self.filter2.set_dropdown_default(browser_options.default_2) 
     self.filter3.set_dropdown_items(browser_options.filterlist) 
     self.filter3.set_dropdown_default(browser_options.default_3) 

     #layout 
     self.filtersizer = wx.BoxSizer(wx.VERTICAL) 

     self.filtersizer.AddStretchSpacer(1) 
     self.filtersizer.Add(self.filter1, 60, wx.EXPAND) 
     self.filtersizer.AddStretchSpacer(1) 
     self.filtersizer.Add(self.filter2, 60, wx.EXPAND) 
     self.filtersizer.AddStretchSpacer(1) 
     self.filtersizer.Add(self.filter3, 60, wx.EXPAND) 
     self.filtersizer.AddStretchSpacer(1) 

私が誰かが私を助けることができると思います!ただ、それが構築されたときに親ウィジェットへの参照を受信する必要がある任意のウィジェットクラスのようなTxの

答えて

1

CollapsibleFilterクラスでは、スーパークラス__init__を呼び出すときに親を渡すことはないので、失敗しています。これを試してみてください:

class CollapsibleFilter(wx.CollapsiblePane): 
    def __init__(self, parent, notify_channel, **kwargs): 
     wx.CollapsiblePane.__init__(self, parent, wx.ID_ANY, **kwargs) 
     ... 
+0

Oooohの! Txは動作しています!私はそれを見ませんでした。今日は新鮮な一日で、新鮮な気分で、私は準備ができています!! :) – VeVi

関連する問題