Hallo Leute!
Ich habe folgendes Problem:
Ich möchte eine GUI-Applikation schreiben, die LogFiles von SnakeServern analysiert und anzeigt. Hierzu arbeite ich mit einer Datenbank (Sqlite), in ihr werden die Datensätze gespeichert. Nun werden die einzelnen Abschnitte der Einträge (Date, Time, Module, Event, Message) in den einzelnen Spalten des ListControls angezeigt. Hier nun die Frage:
Wie schaffe ich es zu wissen, dass jemand auf einen Spaltenkopf drückt, um die Einträge nach dieser Spalte zu sortieren? Denn wenn jemand z.B. auf "Time" drückt, möchte ich die Einträge nach den Werten in dieser Spalte Datenbankseitig sortieren.
Kann sein, dass es völlig banal ist...
Kann man zum Beispiel diese Spalten des ListControls beim Hinzufügen einfach an eine Methode "binden" mit der man denn das Event verarbeitet?
Ich würde mich über Ratschläge freuen, und wenn ihr noch mehr Informationen braucht, oder ich quatsch erzähle, bitte höflichst darauf hinweisen .
Danke schon einmal im Voraus...
Event-Handling eines ListControls; Sortierung vornehmen
- Blauer Fasan
- User
- Beiträge: 49
- Registriert: Montag 26. März 2007, 15:08
- Kontaktdaten:
Dummheit heißt sich in den Vordergrund zu stellen, um gesehen zu werden.
Klugheit heißt sich zurückzuhalten, um zu sehen!
Klugheit heißt sich zurückzuhalten, um zu sehen!
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Blauer Fasan!Blauer Fasan hat geschrieben:Wie schaffe ich es zu wissen, dass jemand auf einen Spaltenkopf drückt, um die Einträge nach dieser Spalte zu sortieren?
So geht es:
Code: Alles auswählen
listctrl.Bind(wx.EVT_LIST_COL_CLICK, self.on_list_col_click)
def on_list_col_click(self, event):
print event.GetColumn()
event.Skip()
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- Blauer Fasan
- User
- Beiträge: 49
- Registriert: Montag 26. März 2007, 15:08
- Kontaktdaten:
Vielen Dank für die rasche Antwort!
Wie sieht es aus, brauche ich keine ID zu übergeben, da ich mit zum Beispiel (so würde es jetzt bei mir aussehen)
das gesamte ListControl, also alle Spalten mit der Event-Methode verknüpfe?
Wie sieht es aus, brauche ich keine ID zu übergeben, da ich mit zum Beispiel (so würde es jetzt bei mir aussehen)
Code: Alles auswählen
self.list.Bind(wx.EVT_LIST_COL_CLICK, self.onColumn)
Dummheit heißt sich in den Vordergrund zu stellen, um gesehen zu werden.
Klugheit heißt sich zurückzuhalten, um zu sehen!
Klugheit heißt sich zurückzuhalten, um zu sehen!
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Blauer Fasasn!Blauer Fasan hat geschrieben:Wie sieht es aus, brauche ich keine ID zu übergeben, da ich mit zum Beispiel [...] das gesamte ListControl, also alle Spalten mit der Event-Methode verknüpfe?
Das Event wx.EVT_LIST_COL_CLICK wurde mit ``Bind`` an den Event-Handler gebunden. Der Event-Handler ist eine Funktion, die als Parameter das Event übergeben bekommt. Das Event ist ein Objekt, an das viele verschiedene Methoden gebunden wurden. Eine der Methoden heißt ``GetColumn()``. Und damit bekommst du raus, auf welche Spalte geklickt wurde.
Ich mache mir die Sache immer ziemlich einfach. Wenn ich nicht weiß, was ich so vom Event übergeben bekomme, dann schreibe ich im Event-Handler:
Code: Alles auswählen
print dir(event)
- http://wxwidgets.org/manuals/stable/wx_wxlistevent.html
- http://wxwidgets.org/manuals/stable/wx_contents.html
mfg
Gerold
Zuletzt geändert von gerold am Montag 18. Juni 2007, 19:31, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- Blauer Fasan
- User
- Beiträge: 49
- Registriert: Montag 26. März 2007, 15:08
- Kontaktdaten:
Dummheit heißt sich in den Vordergrund zu stellen, um gesehen zu werden.
Klugheit heißt sich zurückzuhalten, um zu sehen!
Klugheit heißt sich zurückzuhalten, um zu sehen!
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Blauer Fasan!Blauer Fasan hat geschrieben:Eine letzte Frage, wozu dient das ``event.Skip()``?
Wenn du einen Event-Handler für ein Event hast, dann wird nach dem Übergeben des Events an den Handler, das Event nicht mehr an andere Event-Handler weiter gegeben. Was bei Command-Events meistens kein Problem ist, ist bei anderen Events sehr wohl manchmal ein Problem. Wenn du z.B. das Event wx.EVT_KEY_DOWN abfängst und im Handler die Verarbeitung des Events nicht mit ``event.Skip()`` weiter gibst, dann hast du zwar den Tastendruck abgefangen, aber im Steuerelement wird nichts angezeigt. Warum? Weil das Event nicht mehr bis zum dafür zuständigen, eingebauten Event-Handler durchgekommen ist.
--> http://wxwidgets.org/manuals/stable/wx_wxevent.html
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- Blauer Fasan
- User
- Beiträge: 49
- Registriert: Montag 26. März 2007, 15:08
- Kontaktdaten:
Dankö, du hast mir wirklich weitergeholfen Gerold!
Dummheit heißt sich in den Vordergrund zu stellen, um gesehen zu werden.
Klugheit heißt sich zurückzuhalten, um zu sehen!
Klugheit heißt sich zurückzuhalten, um zu sehen!
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Blauer Fasan!Blauer Fasan hat geschrieben:"Wer kämpft kann verlieren, wer nicht kämpft hat schon verloren"
Wer kämpft kann verlieren, wer nicht kämpft muss sich darüber keine Gedanken machen.
Wer sich verteidigt kann verlieren, wer sich nicht verteidigt hat schon verloren.
Wie auch immer. Es gibt für jeden Scheiß einen Spruch. Mindestens einen dafür und mindestens einen dagegen.
mfg
Gerold
Edit: Na wie bin ich denn schräg drauf, heute!?? Nichts für ungut.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.