关于wxpythonlistctrl的一个问题

关于wxpythonlistctrl的一个问题,wxpython,listctrl,Wxpython,Listctrl,我在wxpython中实现了一个GUI应用程序,在主窗口上,有一个listctrl用于显示文件名。一开始它是空的。用户单击文件,然后打开,然后选择要打开的文件,当通过单击“确定”按钮完成此操作时,文件名应显示在listctrl中。但这似乎不起作用。我用了一个print子句来检查,print子句有效。这是我的密码: lc1是listctrl,它在启动主窗口时一开始就初始化了,但当OnDisplay被触发时,显示时的打印称为works,下面两个打印子句也可以工作。但是主窗口上的listctrl没有

我在wxpython中实现了一个GUI应用程序,在主窗口上,有一个listctrl用于显示文件名。一开始它是空的。用户单击文件,然后打开,然后选择要打开的文件,当通过单击“确定”按钮完成此操作时,文件名应显示在listctrl中。但这似乎不起作用。我用了一个print子句来检查,print子句有效。这是我的密码:


lc1是listctrl,它在启动主窗口时一开始就初始化了,但当OnDisplay被触发时,显示时的打印称为works,下面两个打印子句也可以工作。但是主窗口上的listctrl没有改变,我的意思是,没有显示级别1和级别2,listctrl的背景也没有改变为红色,请问原因是什么?非常感谢

下面是一个在Windows 7、Python 2.6和wx 2.8上运行的示例

import wx

class ListTest(wx.Frame):
    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, -1, title, size=(380, 230))

        panel = wx.Panel(self, -1)

        self.list = wx.ListCtrl(panel, -1, style=wx.LC_REPORT) 
        self.list.InsertColumn(0, 'col 1', width=140)

        hbox = wx.BoxSizer(wx.HORIZONTAL)
        hbox.Add(self.list, 1, wx.EXPAND)
        panel.SetSizer(hbox)
        self.Centre()
        self.Show(True)

        self.Bind(wx.EVT_CHAR_HOOK, self.onKey)

    def onKey(self, evt):
        if evt.GetKeyCode() == wx.WXK_DOWN:
            self.list.InsertStringItem(0, "level 1")
            self.list.InsertStringItem(1, "level 2")
            self.list.SetBackgroundColour(wx.RED)
            self.list.Refresh()

            print self.list.GetItemText(0)
            print self.list.GetItemText(1)
        else:
            evt.Skip()


app = wx.App()
ListTest(None, 'list test')
app.MainLoop()

在python2.6、Wxpython2.8、Windows7上运行良好。@volting:嗯,我使用python2.6和WindowsVista……vista和Windows7之间应该没有任何区别。也许代码中的其他内容正在影响。。。我将发布一个可运行的示例,您可以看看这是否适用于you@volting:谢谢,我将检查代码:
import wx

class ListTest(wx.Frame):
    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, -1, title, size=(380, 230))

        panel = wx.Panel(self, -1)

        self.list = wx.ListCtrl(panel, -1, style=wx.LC_REPORT) 
        self.list.InsertColumn(0, 'col 1', width=140)

        hbox = wx.BoxSizer(wx.HORIZONTAL)
        hbox.Add(self.list, 1, wx.EXPAND)
        panel.SetSizer(hbox)
        self.Centre()
        self.Show(True)

        self.Bind(wx.EVT_CHAR_HOOK, self.onKey)

    def onKey(self, evt):
        if evt.GetKeyCode() == wx.WXK_DOWN:
            self.list.InsertStringItem(0, "level 1")
            self.list.InsertStringItem(1, "level 2")
            self.list.SetBackgroundColour(wx.RED)
            self.list.Refresh()

            print self.list.GetItemText(0)
            print self.list.GetItemText(1)
        else:
            evt.Skip()


app = wx.App()
ListTest(None, 'list test')
app.MainLoop()