質問
メインウィンドウにWXPythonにGUIアプリケーションを実装しました。ファイルの名前を分解するために使用されるリストCtrlがあります。最初は空でした。ユーザーは「ファイル」をクリックしてから「開く」をクリックしてから、[OK]ボタンをクリックして実行されると、[ファイル]を選択します。ファイルの名前はListCtrlに表示されるはずです。しかし、これは機能しないようです。私はaを使用しました 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()
lc1
listctrlです。メインウィンドウがlauchで行われたときに最初に初期化されましたが、 OnDisplay
トリガーされました print "On display called"
作品、および次の2つ print
条項も機能します。しかし、メインウィンドウのlistctrlは変更されませんでした。つまり、 level 1
と level 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()
所属していません StackOverflow