2013-07-12 31 views
0

我有一個wx.ListCtrl接口,作爲發現:EnableAlternateRowColours例子將有很大的幫助

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 初始化(自我,父母,ID,標題) : wx.Dialog。 INIT(個體,父母,ID,標題,大小=(600500),式= 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(個體): 直徑= MyDialog (無,-1, 'capitals.py') dia.ShowModal() dia.Destroy() 返回TRUE

應用程式= MyApp的(0) app.MainLoop()

+0

我沒有注意到你的代碼中的任何地方你發佈,你實際上調用方法EnableAlternateRowColours&你使用該方法的正確版本的wxpython,因爲它是新版本2.9.5。 – Yoriz

回答

0

作爲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/