我有一个在wxpython中实现的GUI应用程序,在主窗口上,有一个listctrl用于显示文件的名称。一开始它是空的。用户单击“文件”,然后“打开”,然后选择要打开的文件,当通过单击“确定”按钮完成此操作时,应该在listctrl中显示文件的名称。但似乎这不起作用。我使用print
子句来检查,print
子句有效。这是我的代码:
def OnDisplay(self):
print "On display called"
self.lc1.InsertStringItem(0, "level 1")
self.lc1.InsertStringItem(1, "level 2")
self.lc1.SetBackgroundColour(wx.RED)
print self.lc1.GetItemText(0)
print self.lc1.GetItemText(1)
self.lc1.Refresh()
def OnDisplay(self):
print "On display called"
self.lc1.InsertStringItem(0, "level 1")
self.lc1.InsertStringItem(1, "level 2")
self.lc1.SetBackgroundColour(wx.RED)
print self.lc1.GetItemText(0)
print self.lc1.GetItemText(1)
self.lc1.Refresh()
是listctrl,它是在主窗口启动时的最开始时初始化的,但是当
lc1
被触发时,OnDisplay
正常工作,以下两个{ {1}}条款也有效。但是主窗口上的listctrl没有改变,我的意思是,没有显示print "On display called"
和print
,listctrl的背景也没有变成红色,请问是什么原因?非常感谢!
答案 0 :(得分:0)
这是一个适用于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()