好的,请耐心等待,我在python中有一个应用程序,显示结果,从数据库查询,什么时候可以返回100行,或100000+,所以我使用UltimateListCtrl作为wxPython lib的一部分, 我可以让它显示数据,没有问题,但其中一个要求是,在数据的每一行上都有一个Colum,一个复选框,所以用户可以选择与否,但这是我遇到的麻烦,我知道你可以添加wxWidgets到UltimateListCtrl行,但不知道如何在虚拟模式下执行它,因为我滚动数据 以下是我的代码
任何帮助,广泛的例子都是受欢迎的,因为它已经开始了几周。
导入wx 从wx.lib.agw导入ultimatelistctrl作为ULC
class clsVCList00(ULC.UltimateListCtrl):
def __init__(self, parent):
#
self.cols = ["Select","Index","Research Key","Results"]
self.hdr_index = 0
#
ULC.UltimateListCtrl.__init__(self, parent , -1, agwStyle=wx.LC_REPORT|wx.LC_VIRTUAL|wx.LC_VRULES)
#
for hdr in self.cols:
res = self.InsertColumn(self.hdr_index, hdr, width=150)
if hdr == "Select":
chk = ULC.UltimateListItem()
chk._mask = wx.LIST_MASK_TEXT | wx.LIST_MASK_IMAGE | wx.LIST_MASK_FORMAT | ULC.ULC_MASK_CHECK
chk._image = []
chk._format = wx.LIST_FORMAT_LEFT
chk._text = "Select"
chk._kind = 1
self.SetColumn(res,chk)
self.hdr_index = self.hdr_index + 1
#
#
self.attr1 = ULC.UltimateListItemAttr()
self.attr1.SetBackgroundColour(wx.NamedColour("yellow"))
self.attr2 = ULC.UltimateListItemAttr()
self.attr2.SetBackgroundColour(wx.NamedColour("light blue"))
self.SetItemCount(10000)
def OnGetItemAttr(self, item):
if item % 3 == 1:
return self.attr1
elif item % 3 == 2:
return self.attr2
else:
return None
def OnGetItemImage(self, item):
return []
def OnGetItemText(self, item, col):
return "Item %d, column %d" % (item, col)
def OnGetItemToolTip(self, item, col):
if item == 0:
return "Tooltip: Item %d, column %d" % (item, col)
return None
def OnGetItemTextColour(self, item, col):
if item == 0 and col == 0:
return wx.Colour(255,0,0)
elif item == 0 and col == 1:
return wx.Colour(0,255,0)
elif item == 0 and col == 2:
return wx.Colour(0,0,255)
else:
return None