是否可以在wxPython中制作手风琴风格的检查表?

时间:2010-05-25 15:31:33

标签: python wxpython

我想在wxPython小部件中制作一个带有手风琴风格的清单。我知道checklistbox,但我在官方文档中找不到任何相关内容。有没有人这样做过?

2 个答案:

答案 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

Two part creation