Frage

Ich habe eine GUI-Anwendung in wxpython implementiert, auf dem Hauptfenster gibt es eine ListCtrl verwendet der Dateien, die Namen Dispaly. es war ganz am Anfang leer. der Benutzer die „Datei“ klickt, dann „offen“, wählt dann eine Datei zu öffnen, wenn das durch Klicken auf der Schaltfläche „OK“ erfolgt ist, wird der Name der Datei sein Display im ListCtrl soll. Aber es scheint, dass dies nicht funktioniert. Ich benutzte eine print Klausel zu überprüfen, arbeitet die print-Klausel. Hier sind meine Codes:

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 ist die ListCtrl, wurde es ganz am Anfang initialisiert, wenn das Hauptfenster lauched wurde, aber als die OnDisplay ausgelöst wurde, die print "On display called" Werke und die folgenden zwei print Klauseln auch Arbeit. aber die ListCtrl im Hauptfenster nicht ändern, ich meine, zeigte nicht die level 1 und level 2, noch hat der Hintergrund des ListCtrl wurde zu rot geändert, was ist der Grund, bitte? vielen Dank!

War es hilfreich?

Lösung

Hier ist ein lauffähiges Beispiel ist die auf Windows 7, Python funktioniert 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()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top