我有wx.ListCtrl
设置了wx.LC_REPORT
位。它有3列。我希望第一列填充每个其他条目的复选框。我尝试使用ListCtrl.InsertItem
方法,但它只需要一个参数(info
),我找不到任何关于该参数需要的文档。我试过将wx.CheckBox
传递给InsertItem
无效。
是否可以将复选框作为wxPython ListCtrl中的条目?如果是这样,我将如何做到这一点?
如果对于我正在谈论的内容有任何歧义,这里是我想要的图片(不确定这是否是wx,但它是我正在寻找的)。我想要在No.列中的1..5旁边的复选框。
答案 0 :(得分:9)
看看wx.lib.mixins.listctrl
。
import wx
import wx.lib.mixins.listctrl as listmix
class TestListCtrl(wx.ListCtrl, listmix.CheckListCtrlMixin, listmix.ListCtrlAutoWidthMixin):
def __init__(self, *args, **kwargs):
wx.ListCtrl.__init__(self, *args, **kwargs)
listmix.CheckListCtrlMixin.__init__(self)
listmix.ListCtrlAutoWidthMixin.__init__(self)
self.setResizeColumn(3)
def OnCheckItem(self, index, flag):
print(index, flag)
class MainWindow(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)
self.panel = wx.Panel(self)
self.list = TestListCtrl(self.panel, style=wx.LC_REPORT)
self.list.InsertColumn(0, "No.")
self.list.InsertColumn(1, "Progress")
self.list.InsertColumn(2, "Description")
self.list.Arrange()
for i in range(1, 6):
self.list.Append([str(i), "", "It's the %d item" % (i)])
self.button = wx.Button(self.panel, label="Test")
self.sizer = wx.BoxSizer(wx.VERTICAL)
self.sizer.Add(self.list, proportion=1, flag=wx.EXPAND | wx.ALL, border=5)
self.sizer.Add(self.button, flag=wx.EXPAND | wx.ALL, border=5)
self.panel.SetSizerAndFit(self.sizer)
self.Show()
app = wx.App(False)
win = MainWindow(None)
app.MainLoop()