2010-02-16 19 views
2

你們有沒有想法如何編輯wx.ListCtrl中第二列的標籤 這裏是我用來創建該列表的代碼..注意第一個列是唯一可編輯的列。我怎樣才能讓其他人也可以編輯?在wx列表控件中編輯標籤的問題


self.lCUsers=wx.ListCtrl(self,style=wx.LC_EDIT_LABELS | wx.LC_REPORT |wx.LC_VRULES | wx.LC_HRULES)
self.lCUsers.SetPosition((20,40))
self.lCUsers.SetSize((300,350))

self.lCUsers.InsertColumn(0,'Users',format=wx.LIST_FORMAT_LEFT ,width=220)
self.lCUsers.InsertColumn(1,'Value',format=wx.LIST_FORMAT_LEFT,width=80)

thankx提前

回答

2

可以使用TextEditMixin

import wx 
from wx.lib.mixins.listctrl import TextEditMixin 

class EditableTextListCtrl(wx.ListCtrl, TextEditMixin): 
    def __init__(self, parent, ID, pos=wx.DefaultPosition, 
       size=wx.DefaultSize, style=0): 
     wx.ListCtrl.__init__(self, parent, ID, pos, size, style) 
     TextEditMixin.__init__(self) 

class MyDialog(wx.Dialog): 
    def __init__(self, parent, id, title): 
     wx.Dialog.__init__(self, parent, id) 
     listCtrl = EditableTextListCtrl(self, -1, style=wx.LC_REPORT|wx.LC_VRULES|wx.LC_HRULES, size=(300, 200)) 
     listCtrl.InsertColumn(0, 'State') 
     listCtrl.InsertColumn(1, 'Capital') 
     listCtrl.SetColumnWidth(0, 140) 
     listCtrl.SetColumnWidth(1, 153) 
     states = ['Slovakia', 'Poland', 'Hungary'] 
     capitals = ['Brastislava', 'Warsaw', 'Budapest'] 
     for i in range(3): 
      listCtrl.InsertStringItem(0, states[i]) 
      listCtrl.SetStringItem(0, 1, capitals[i]) 

class MyApp(wx.App): 
    def OnInit(self): 
     dia = MyDialog(None, -1, 'capitals.py') 
     dia.ShowModal() 
     dia.Destroy() 
     return True 

app = MyApp(0) 
app.MainLoop()