我想在wxPython小部件中制作一个带有手风琴风格的清单。我知道checklistbox,但我在官方文档中找不到任何相关内容。有没有人这样做过?
答案 0 :(得分:2)
您可以使用wx.combo.ComboCtrl,它允许任何自定义弹出窗口,并将其与wx.CheckListBox结合使用。
以下是折叠的样子:
alt text http://i46.tinypic.com/2j11q8g.png
并展开:
alt text http://i45.tinypic.com/21kjj8w.png
为了得到这个,我开始使用演示中的ComboCtrl示例,并且在ListCtrlComboPopup列表类中,我用CheckListBox替换了ListCtrl(并进行了一些其他小的更改,使命令与CheckListBox控件一致,而不是ListCtrl )。
答案 1 :(得分:1)
您必须使用wx.PreCheckListBox()进行此部分所需的两部分初始化。
这是我的实施。将它与ComboCtrl结合起来就可以了。
import wx
from wx import combo
class checkListComboPopup(combo.ComboPopup):
def __init__(self):
combo.ComboPopup.__init__(self)
self.checklist = wx.PreCheckListBox()
self._value = -1
def Init(self):
self._value = -1
def Create(self, parent):
return self.checklist.Create(parent, 1, wx.Point(0,0), wx.DefaultSize)
def GetControl(self):
return self.checklist
def SetStringValue(self, s):
pass
def GetStringValue(self):
if (self._value >= 0):
return self.checklist.GetItemText(self, self._value)
else:
return wx.EmptyString
def OnMouseMove(self, event):
pass
def GetPreCheckList(self):
return self.checklist
def OnMouseClick(self, event):
pass