在wx列表控件中编辑标签的问题

时间:2010-02-16 16:03:20

标签: python wxpython wxwidgets

你知道如何编辑wx.ListCtrl中第二列中的标签吗? 这是我用来创建该列表的代码。请注意,第一列是唯一可编辑的列。我怎样才能使另一个可编辑?


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)

提前谢谢

1 个答案:

答案 0 :(得分: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()