wxpython + CollapsiblePane 不起作用
wxpython + CollapsiblePane doesn't work
我今天了解了可折叠窗格。但我无法让它工作。我得到的错误是:
"TypeError: in method 'new_CollapsiblePane', expected argument 1 of type 'wxWindow *'"
我尝试将可折叠过滤器作为 "def",作为 class 并包含在 class 主体中。现在我没主意了。
这是我最近的代码:
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)
希望有人能帮助我!
发送
就像任何小部件一样 class 它需要在构造时接收对父小部件的引用。在你的 CollapsibleFilter
class 中,当它调用超级 class __init__
时你没有传递父级,所以这就是它失败的原因。试试这个:
class CollapsibleFilter(wx.CollapsiblePane):
def __init__(self, parent, notify_channel, **kwargs):
wx.CollapsiblePane.__init__(self, parent, wx.ID_ANY, **kwargs)
...
我今天了解了可折叠窗格。但我无法让它工作。我得到的错误是:
"TypeError: in method 'new_CollapsiblePane', expected argument 1 of type 'wxWindow *'"
我尝试将可折叠过滤器作为 "def",作为 class 并包含在 class 主体中。现在我没主意了。
这是我最近的代码:
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)
希望有人能帮助我! 发送
就像任何小部件一样 class 它需要在构造时接收对父小部件的引用。在你的 CollapsibleFilter
class 中,当它调用超级 class __init__
时你没有传递父级,所以这就是它失败的原因。试试这个:
class CollapsibleFilter(wx.CollapsiblePane):
def __init__(self, parent, notify_channel, **kwargs):
wx.CollapsiblePane.__init__(self, parent, wx.ID_ANY, **kwargs)
...