Tabelle Updaten?

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Stolzi
User
Beiträge: 155
Registriert: Mittwoch 18. August 2004, 15:44

Hallo,

bin ziemlich neu mit wxpython und habe folgendes Problem. Ich definiere eine Tabelle wie folgt:

Code: Alles auswählen

class CustomDataTable(gridlib.PyGridTableBase):
    
    def __init__(self, log):
        gridlib.PyGridTableBase.__init__(self)
        .....
        self.data = .......

class CustTableGrid(gridlib.Grid):
    def __init__(self, parent, log):
        gridlib.Grid.__init__(self, parent, -1)

        self.table = CustomDataTable(log)

        self.SetTable(self.table, True)

        self.SetRowLabelSize(0)
        self.SetMargins(0,0)
        self.AutoSizeColumns(False)

        gridlib.EVT_GRID_CELL_LEFT_DCLICK(self, self.OnLeftDClick)

class TestFrame(wx.Frame):
    def __init__(self, parent, log):
        self.log=log
        wx.Frame.__init__(
            self, parent, -1, "Custom Table, data driven Grid  Demo", size=(640,480)
            )
        p = wx.Panel(self, -1, style=0)
        self.grid = CustTableGrid(p, self.log)
        b = wx.Button(p, -1, "Another Control...")
        b.SetDefault()
        self.Bind(wx.EVT_BUTTON, self.OnButton, b)
        self.bs = wx.BoxSizer(wx.VERTICAL)
        self.bs.Add(self.grid, 1, wx.GROW|wx.ALL, 5)
        self.bs.Add(b)
        p.SetSizer(self.bs)

So, und genau an der Stelle definiere ich einen Button zum Löschen von markierten Zeilen in der Tabelle. Die Zeilen werden in der Mysql Tabelle geöscht die dahinter steht und aus der die Zeilen ausgelesen werden und ganz oben wie geschrieben mit self.data = ....... in die Tabelle kommen.

Code: Alles auswählen

    def OnButton(self, evt):        
        for i in range(self.grid.table.GetNumberRows()):
            if self.grid.table.GetValue(i,3)==1:
                DelName = self.grid.table.GetValue(i,2)
                DelId = self.grid.table.GetValue(i,0)
                self.grid.table.Testclass.UserDel(DelId,DelName)
Ich habe nun einfach versucht mit self.grid.table.data = ...... die Zeilen neu zu setzen. Das funktioniert auch, aber ziemlich unsauber: Die Änderung ist erst sichtbar wenn nach drücken des Knopfes in ein anderes Feld gesprungen wird und nebenbei bleiben die gelöschten Zeilen in der Tabelle als leere Zeilen.
Es gibt doch sicher eine einfache Möglichkeit die Tabelle komplett neu mit den neuen Daten zu laden?
Tut mir leid, ich komm von allein nicht drauf wie ich das bewerkstellige ;-)

Danke
Stolzi
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hallo Stolzi!

Ich mach recht wenig mit dem Grid. Aber wenn ich von dir ein funktionierendes Beispiel bekomme, dann kann ich ein wenig herumprobieren. --> http://paste.pocoo.org/

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Stolzi
User
Beiträge: 155
Registriert: Mittwoch 18. August 2004, 15:44

Danke für deine Hilfe. Habs mal umprogrammiert, dass es sich gleich verhält wie bei mir, nur ohne Mysql Tabelle dahinter.
Dass siehst was ich meine: Markiere Zeile 3 zB, drücke auf Delete. Dass man nun sieht, dass gelöscht wurde musst du erst in eine andere Zeile klicken und auch bleiben die leeren Zeilen das möchte ich eben nicht:
http://paste.pocoo.org/show/2135/
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Stolzi hat geschrieben:Danke für deine Hilfe.
Hallo Stolzi!

Leider kann ich dir nicht helfen. Ich bin mir sicher, dass es dafür eine ganz einfache Lösung geben muss, aber ich finde sie nicht.

Dafür müsste ich mir noch mal das entsprechende Kapitel aus "wxPython in Action" durchlesen und mich mehr mit dem Code vom Grid beschäftigen. Aber so viel Zeit habe ich nicht. Ich habe jetzt nach einer Stunde aufgegeben. :? ...sorry!

mfg
Gerold
:-)

PS: Falls dir hier sonst niemand weiter helfen kann --> die nächste Instanz ist die wxPython-Mailingliste. Dort sind die Profis zu hause.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Stolzi
User
Beiträge: 155
Registriert: Mittwoch 18. August 2004, 15:44

Arg, mensch, danke für deine Hilfe! Das war aber nicht nötig. Hab mir gedacht viell weiss schon wer wuies geht. Ich werd dann nochmal das gesamte demo Paket nach einem Beispiel durchwühlen. Viell habe ich ja beim ersten Mal was übersehen.
Danke
Stefan
Antworten