Probleme mit wx.ListCtrl

Plattformunabhängige GUIs mit wxWidgets.
Antworten
akhof
User
Beiträge: 104
Registriert: Mittwoch 11. Mai 2011, 19:07
Kontaktdaten:

Hallo!

Ich arbeite gerade an einem Programm und bin nun dabei eine wx.ListCtrl einzubauen. Leider funktioniert dies noch nocht so ganz :K
Irgendwie wird nur die erste Spalte mit dem letzten Eintrag gefüllt (siehe Bild...)

Bild

Hier mein Code:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import wx, os

    
class MyFrame(wx.Frame):
   
    def __init__(self, *args, **kwds):
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        
        self.db = Database()

        self.list_vok = wx.ListCtrl(self.notebook_vokabeln_v, -1, style=wx.LC_LIST | wx.LC_REPORT | wx.LC_SORT_ASCENDING | wx.SUNKEN_BORDER | wx.NO_BORDER)
        self.list_vok.InsertColumn(0, "Frage")
        self.list_vok.InsertColumn(1, "Antwort")
        self.list_vok.InsertColumn(2, "Tipp")

#[...]

    def vok_edit_anzeigen(self, event):
        sel = self.wahl_kat.GetSelection()
        voks = self.db.get_vok_by_lek(sel)
        self.list_vok.DeleteAllItems()
        print(voks)
        for i in range(len(voks)):
            frage = voks[i][0]
            antwort = voks[i][1]
            tipp = voks[i][2]
            
            num_items = self.list_vok.GetItemCount()
            self.list_vok.InsertStringItem(num_items, frage)
            self.list_vok.SetStringItem(num_items, 1, antwort)
            self.list_vok.SetStringItem(num_items, 2, tipp)

if __name__ == "__main__":
    app = wx.PySimpleApp(0)
    wx.InitAllImageHandlers()

    frame = MyFrame(None, -1, "")
    app.SetTopWindow(frame)
    frame.Show()
    app.MainLoop()
Ich habe leider keine Ahnung, was ich noch machen soll... - Im Internet stzeht leider auch nichts nützliches dazu (ich habe gesucht - muss also nichts heißen :D)

Viiieeeelen Dank schoneinmal im Vorraus!

Nachtrag: Die Variablen "frage", "antwort" und "tipp" führen beide Strings!
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

Anscheinend (ich weiss jetzt nicht warum, steht vielleicht in der Doku, bin jetzt zu faul)
ist das wx.LC_LIST schuld.
Wenn ich das weglasse funktioniert es.

BTW:

Code: Alles auswählen

            num_items = self.list_vok.GetItemCount()
            self.list_vok.InsertStringItem(num_items, frage)
            self.list_vok.SetStringItem(num_items, 1, antwort)
            self.list_vok.SetStringItem(num_items, 2, tipp)
verstehe ich nicht ganz, warum num_items und nicht einfach die variable i statt num_items verwenden?
akhof
User
Beiträge: 104
Registriert: Mittwoch 11. Mai 2011, 19:07
Kontaktdaten:

Dankesehr! :D
Antworten