Mehrere Events auf einen Widget

Fragen zu Tkinter.
Antworten
Andi
User
Beiträge: 24
Registriert: Sonntag 27. Juli 2003, 14:23
Wohnort: Großkarolinenfeld

Montag 8. September 2003, 07:58

hallo zusammen,

wieso kann ich per tag_bind nicht mehrere Events auf ein Widget "klatschen". Also ungefähr so:

Code: Alles auswählen

                  self.tag_bind(self.images[len(self.images)-1],"<Double-1>",lambda e, tN=tmpNode: self.callCallback(node=tN))                     
                  self.tag_bind(self.images[len(self.images)-1],"<Button-1>",lambda e, tN=tmpNode: self.setSelectedNode(tN,action="RESET",tree=tree))
Im Grunde wird immer die Bindung mit Button-1 ausgeführt.
Button-Double-1 als Event funktioniert auch nicht, obwohl ich immer dachte das detailiertere Events bevorzugt behandelt werden, oder etwa nicht?


Danke für eure Hilfe im voraus

mfg andi
mfg

(der Anderl aus Bavaria der bei den Preißn war und jetzt wieda in bayern is)
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Montag 8. September 2003, 08:46

Hallo!

Hm, also ich kenne keine GUI, die Klick und Doppelklick beim selben Control ermöglicht. Wie soll das auch gehen? Dann müsste ja die GUI nach jedem Klick erstmal warten, ob nicht noch ein zweiter kommt, und bei Windows z.B. kann ich eine Doppelklickgeschwindigkeit von gut einer Sekunde einstellen. Das hieße, dass der Anwender nach jedem Einfachklick eine Sekunde warten muss, bis es weitergeht.

Irgendwie nachbilden könnte man sowas schon. Bei Editoren ist es häufig z.B. so, dass ein Einfachklick den Textcursor positioniert, ein Doppelklick das Wort unter dem Cursor markiert und ein Dreifachklick die ganze Zeile. Ich vermute mal, dass dazu die Zeitspannen zw. den Einfachklicks auswertet werden.

Jan
Kartoffel
User
Beiträge: 66
Registriert: Montag 7. April 2003, 17:08

Montag 8. September 2003, 10:53

Voges hat geschrieben:Hallo!

Hm, also ich kenne keine GUI, die Klick und Doppelklick beim selben Control ermöglicht. Wie soll das auch gehen? Dann müsste ja die GUI nach jedem Klick erstmal warten, ob nicht noch ein zweiter kommt, und bei Windows z.B. kann ich eine Doppelklickgeschwindigkeit von gut einer Sekunde einstellen. Das hieße, dass der Anwender nach jedem Einfachklick eine Sekunde warten muss, bis es weitergeht.
Naja, schon beim Windows desktop ist es doch so, einmal klicken markiert, zweimal klicken öffnet. Das sind ja zwei verschiedene Sachen.
Oder hab ich da was falsch verstanden?

Zur Problemlösung hab ich leider auch nichts anzubieten :?
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Montag 8. September 2003, 11:55

Kartoffel hat geschrieben:Naja, schon beim Windows desktop ist es doch so, einmal klicken markiert, zweimal klicken öffnet. Das sind ja zwei verschiedene Sachen.
Stimmt, das Beispiel ist deutlich naheliegender. Es gibt tatsächlich 'ne Menge Beispiele, musste ich feststellen (macht man sich in der Regel bei der Bedienung keine Gedanken drüber). Aber die wurden sicherlich nicht mit den einfachen KLick- und Doppelklick-Events realisiert. Beim CListCtrl (z.B. im Windows Explorer) der MFC zum Beispiel wird auch auf Klick und Doppelklick reagiert, zumindest vordergründig. Tatsächlich wird nicht auf den Klick-Event reagiert, sondern auf ein Event, der ausgelöst wird, wenn sich die Selection/Auswahl geändert hat. Der Event ist auch nicht auf die Maus beschränkt, sondern kann auch durch die Cursor-Tasten ausgelöst werden.
Jan
Antworten