質問

メインウィンドウに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 1level 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()
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top