wxPython - 在 ListCtrl 中设置项目并获取所选项目

wxPython - Set Items in ListCtrl and Get Selected Item

我有以下用于创建名为 "browser list" 的 ListCtrl 的代码。

self.browserList=wx.ListCtrl(panel, pos=(20,150), size=(250,100), style.wx.LC_REPORT|wx.BORDER_SUNKEN)
self.browserList.InsertColumn(0, '')
self.browserList.InsertColumn(1, 'Browser: ')
self.browserList.SetColumnWidth(0, 50)
self.browserList.SetColumnWidth(1, 200)

我想添加以下内容以将这些字符串添加为项目,但它把它放在第一列中,而我需要它在第二列中:

self.browserList.InsertStringItem(1, 'Google Chrome')
self.browserList.InsertStringItem(2, 'Mozilla Firefox')

另外,如何获取选中的项目并将其存储在变量中?

比那要复杂一点。您插入该项目,然后使用 SetStringItem 将数据插入其他列。这是一个快速而肮脏的例子:

import wx

########################################################################
class MyForm(wx.Frame):

    #----------------------------------------------------------------------
    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY, "List Control Tutorial")

        # Add a panel so it looks the correct on all platforms
        panel = wx.Panel(self, wx.ID_ANY)
        self.index = 0

        self.list_ctrl = wx.ListCtrl(panel, size=(-1,100),
                                     style=wx.LC_REPORT
                                     |wx.BORDER_SUNKEN
                                     )
        self.list_ctrl.InsertColumn(0, '', width=50)
        self.list_ctrl.InsertColumn(1, 'Browser', width=200)

        # add some browsers
        self.list_ctrl.InsertStringItem(0, "foo")
        self.list_ctrl.SetStringItem(0, 1, "Google Chrome")
        self.list_ctrl.InsertStringItem(1, "bar")
        self.list_ctrl.SetStringItem(1, 1, "Mozilla Firefox")

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.list_ctrl, 0, wx.ALL|wx.EXPAND, 5)
        panel.SetSizer(sizer)

#----------------------------------------------------------------------
# Run the program
if __name__ == "__main__":
    app = wx.App(False)
    frame = MyForm()
    frame.Show()
    app.MainLoop()

我个人更喜欢使用 ObjectListView 而不是 ListCtrl。我只是觉得效果更好。但您可能会发现我的旧提示和技巧教程很有用:

如果您决定转换,那么您可能会发现这个也有帮助: