【问题标题】:EnableAlternateRowColours Example would help a lotEnableAlternateRowColours 示例将有很大帮助
【发布时间】:2013-07-10 22:03:13
【问题描述】:

我有一个 wx.ListCtrl 接口,如下所示:

http://wiki.wxpython.org/AnotherTutorial#wx.ListCtrl

但我无法让备用行颜色工作,如下所示:

http://wxpython.org/Phoenix/docs/html/ListCtrl.html#ListCtrl.EnableAlternateRowColours

谁能给我一个简单的例子来说明如何使用它们,使用网站上的这个例子吗?

!/usr/bin/python

capitals.py

导入 wx

类 MyDialog(wx.Dialog): def init(自我,父母,ID,标题): wx.Dialog.init(self, parent, id, title, size=(600,500), style=wx.DEFAULT_DIALOG_STYLE)

    hbox  = wx.BoxSizer(wx.HORIZONTAL)
    vbox1 = wx.BoxSizer(wx.VERTICAL)
    vbox2 = wx.BoxSizer(wx.VERTICAL)
    vbox3 = wx.GridSizer(2,2,0,0)
    vbox4 = wx.BoxSizer(wx.VERTICAL)
    pnl1 = wx.Panel(self, -1, style=wx.SIMPLE_BORDER)
    pnl2 = wx.Panel(self, -1, style=wx.SIMPLE_BORDER)
    self.lc = wx.ListCtrl(self, -1, style=wx.LC_REPORT)
    self.lc.InsertColumn(0, 'State')
    self.lc.InsertColumn(1, 'Capital')
    self.lc.SetColumnWidth(0, 140)
    self.lc.SetColumnWidth(1, 153)
    vbox1.Add(pnl1, 1, wx.EXPAND | wx.ALL, 3)
    vbox1.Add(pnl2, 1, wx.EXPAND | wx.ALL, 3)
    vbox2.Add(self.lc, 1, wx.EXPAND | wx.ALL, 3)
    self.tc1 = wx.TextCtrl(pnl1, -1)
    self.tc2 = wx.TextCtrl(pnl1, -1)
    vbox3.AddMany([ (wx.StaticText(pnl1, -1, 'State'),0, wx.ALIGN_CENTER),
                    (self.tc1, 0, wx.ALIGN_LEFT|wx.ALIGN_CENTER_VERTICAL),
                    (wx.StaticText(pnl1, -1, 'Capital'),0, wx.ALIGN_CENTER_HORIZONTAL),
                    (self.tc2,0)])
    pnl1.SetSizer(vbox3)
    vbox4.Add(wx.Button(pnl2, 10, 'Add'),   0, wx.ALIGN_CENTER| wx.TOP, 45)
    vbox4.Add(wx.Button(pnl2, 11, 'Remove'), 0, wx.ALIGN_CENTER|wx.TOP, 15)
    vbox4.Add(wx.Button(pnl2, 12, 'Clear'), 0, wx.ALIGN_CENTER| wx.TOP, 15)
    vbox4.Add(wx.Button(pnl2, 13, 'Close'), 0, wx.ALIGN_CENTER| wx.TOP, 15)
    pnl2.SetSizer(vbox4)
    self.Bind (wx.EVT_BUTTON, self.OnAdd, id=10)
    self.Bind (wx.EVT_BUTTON, self.OnRemove, id=11)
    self.Bind (wx.EVT_BUTTON, self.OnClear, id=12)
    self.Bind (wx.EVT_BUTTON, self.OnClose, id=13)
    hbox.Add(vbox1, 1, wx.EXPAND)
    hbox.Add(vbox2, 1, wx.EXPAND)
    self.SetSizer(hbox)

def OnAdd(self, event):
    if not self.tc1.GetValue() or not self.tc2.GetValue():
        return
    num_items = self.lc.GetItemCount()
    self.lc.InsertStringItem(num_items, self.tc1.GetValue())
    self.lc.SetStringItem(num_items, 1, self.tc2.GetValue())
    self.tc1.Clear()
    self.tc2.Clear()

def OnRemove(self, event):
    index = self.lc.GetFocusedItem()
    self.lc.DeleteItem(index)

def OnClose(self, event):
    self.Close()

def OnClear(self, event):
    self.lc.DeleteAllItems()

类 MyApp(wx.App): def OnInit(self): dia = MyDialog(None, -1, 'capitals.py') dia.ShowModal() 直径.Destroy() 返回真

app = MyApp(0) app.MainLoop()

【问题讨论】:

  • 我没有注意到您发布的代码中的任何地方实际上调用了 EnableAlternateRowColours 方法,并且您是否为该方法使用了正确版本的 wxpython,因为它是 2.9.5 版中的新功能。跨度>

标签: wxpython listctrl


【解决方案1】:

正如 Yoriz 所指出的,这是一种相当新的方法。如果你想用旧方法做,我会在我的博客上展示如何做:http://www.blog.pythonlibrary.org/2011/01/04/wxpython-wx-listctrl-tips-and-tricks/

基本上,我只使用 SetItemBackgroundColour() 并在添加行时交替使用。您还可以使用 ObjectListView,它是 ListCtrl 的一个包装器,其中内置了交替的行颜色。如果您决定走这条路,这篇文章可能会对您有所帮助:http://www.blog.pythonlibrary.org/2009/12/23/wxpython-using-objectlistview-instead-of-a-listctrl/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 2020-02-21
    相关资源
    最近更新 更多