1

我的代码正在生成以下错误-“无法检索有关列表控件项 3 的信息”。

import wx

DATA = [("0", "Zero"), ("1", "One"), ("2", "Two")]
class MainWindow(wx.Frame):
    def __init__(self, *args, **kwargs):
        wx.Frame.__init__(self, *args, **kwargs)

        self.panel = wx.Panel(self)

        self.list = wx.ListCtrl(self.panel, style=wx.LC_REPORT)
        self.list.InsertColumn(0, "Index")
        self.list.InsertColumn(1, "Number")       
        for data in DATA:
            self.list.Append((data[0], data[1]))

        self.button = wx.Button(self.panel, label="Delete")
        self.button.Bind(wx.EVT_BUTTON, self.OnButton)

        self.sizer = wx.BoxSizer(wx.VERTICAL)
        self.sizer.Add(self.list, 1, wx.ALL | wx.EXPAND, 5)
        self.sizer.Add(self.button, 0, wx.ALL | wx.EXPAND, 5)
        self.panel.SetSizerAndFit(self.sizer)

        self.Show()

    def OnButton(self, e):
        current_items = self.list.GetItemCount()
        while ((current_items) >= 0) :
            if (self.list.GetItemText(current_items) == "1" or self.list.GetItemText(current_items-1) == "2"):
                self.list.DeleteItem(current_items)
                wx.MessageBox("Delete item ", 'Delete Information',wx.OK)
            else:
                break
            current_items-=1

if __name__ == "__main__":
    app = wx.App(False)
    win = MainWindow(None)
    win.Centre()
    app.MainLoop()

谁能告诉我代码有什么问题?我应该怎么做才能解决这个错误?提前致谢。

4

2 回答 2

1

也许你想要这样的东西?

import wx

DATA = [("0", "Zero"), ("1", "One"), ("2", "Two")]
class MainWindow(wx.Frame):
    def __init__(self, *args, **kwargs):
        wx.Frame.__init__(self, *args, **kwargs)

        self.panel = wx.Panel(self)

        self.list = wx.ListCtrl(self.panel, style=wx.LC_REPORT)
        self.list.InsertColumn(0, "Index")
        self.list.InsertColumn(1, "Number")       
        for data in DATA:
            self.list.Append((data[0], data[1]))

        self.button = wx.Button(self.panel, label="Delete")
        self.button.Bind(wx.EVT_BUTTON, self.OnButton)

        self.sizer = wx.BoxSizer(wx.VERTICAL)
        self.sizer.Add(self.list, 1, wx.ALL | wx.EXPAND, 5)
        self.sizer.Add(self.button, 0, wx.ALL | wx.EXPAND, 5)
        self.panel.SetSizerAndFit(self.sizer)

        self.Show()

    def OnButton(self, e):
        current_items = self.list.GetItemCount() - 1
        while ((current_items) >= 0) :
            if (self.list.GetItemText(current_items) == "1" or self.list.GetItemText(current_items) == "2"):
                self.list.DeleteItem(current_items)
                wx.MessageBox("Delete item ", 'Delete Information',wx.OK)
            else:
                break
            current_items-=1

if __name__ == "__main__":
    app = wx.App(False)
    win = MainWindow(None)
    win.Centre()
    app.MainLoop()
于 2013-01-23T09:11:49.510 回答
0
   def OnButton(self, e):
    itemIndex = self.list.GetNextItem(itemIndex,
                                         wx.LIST_NEXT_ALL,
                                         wx.LIST_STATE_SELECTED);
    print itemIndex
    if itemIndex == -1: 
        print "Nothing Selected";

        # // Got the selected item index
     print "SELECTED:",self.list.GetItemText(itemIndex);

尝试类似的东西

于 2013-01-23T06:13:30.203 回答