Seite 1 von 1

rechte Maustaste für button in einem Tkinter Grid abfragen

Verfasst: Samstag 5. Oktober 2019, 15:33
von msmn
wie kann man denn bitte für den jeweiligen Button in einem Tkinter Grid abfragen, welche (bzw ob die "rechte") Maustaste gedrückt wurde.

Anmerkung: "linke Taste" scheint ja Standard zu sein...und funktioniert
mit "bind" konnte ich auch die "rechte" Taste abfragen, ABER das geht ja nur für das gesamte Widget ...ich würde aber auch wissen muessen, welcher Button gedrückt wurde...

Danke
Manfred

Re: rechte Maustaste für button in einem Tkinter Grid abfragen

Verfasst: Samstag 5. Oktober 2019, 16:29
von __deets__
Ich bin kein grosser Tkinter-Experte - aber kannst du nicht fuer jeden Button explizit das Binding anlegen?

Re: rechte Maustaste für button in einem Tkinter Grid abfragen

Verfasst: Samstag 5. Oktober 2019, 18:01
von msmn
möglich....und "wie bitte"?

momentan frage ich wie folgt auf Mausklick ab (x=jeweiliger Button in einem Grid):
button[x].config(command=partial(funktion_mausklick, button[x]))
damit wird mir zwar "der Mausklick eines bestimmten Buttons" gemeldet....ich weiss aber jetzt nicht, wie ich hier eventuell abfragen kann, ob es die "linke oder rechte oder .." Maustaste wäre, die geklickt wurde...

Manfred

Re: rechte Maustaste für button in einem Tkinter Grid abfragen

Verfasst: Samstag 5. Oktober 2019, 18:19
von Sirius3
Du hast doch schon ›bind‹ erwähnt.

Re: rechte Maustaste für button in einem Tkinter Grid abfragen

Verfasst: Montag 7. Oktober 2019, 05:06
von msmn
Danke für Eure Antwort....
wahrscheinlich habe ich mich schlecht ausgedrueckt

nochmals:

1) momentan frage ich wie folgt auf Mausklick ab (x=jeweiliger Button in einem Grid):
button[x].config(command=partial(funktion_mausklick, button[x]))
damit wird mir zwar "der Mausklick eines bestimmten Buttons" gemeldet....ich weiss aber jetzt nicht, wie ich hier eventuell abfragen kann, ob es die "linke oder rechte oder .." Maustaste wäre, die geklickt wurde...

2) entsprechend hatte ich für JEDEN der Buttons dann ergänzt:
button[x].bind("<Button-3>", function_rightclick)
damit wird bei Betätigung der rechten Maustaste dann auch "function_rightclick" ausgeführt....dort gibt es aber (für mich ersichtlich zumindest) KEINE Info, bei welchen der Buttons eben der Rechtsklick gemacht wurde (zB: sieht die von Tkinter in den function_rightclick mitgegebene Variable immer so aus: <ButtonPress event state=Mod1 num=3 x=45 y=30> ….wobei sich die Positionsangaben x,y immer auf die Klickposition "innerhalb des jeweiligen Buttons" beziehen...und somit zur Auswertung auch nicht wirklich dienen)

3) wie kann man also bitte herausfinden, bei "WELCHEM Button" die rechte Maustaste geklickt wurde??

Besten Dank im Voraus
Manfred

Re: rechte Maustaste für button in einem Tkinter Grid abfragen

Verfasst: Montag 7. Oktober 2019, 05:53
von Sirius3
Wie das geht, hast Du doch schon bei 1) gezeigt. Mit partial kannst Du weitere Parameter mit festem Wert übergeben. x ist übrigens ein ganz schlechter Name für einen Index und mit Indizes sollte man eh nicht arbeiten, wenn man auch direkt mit den Button-Instanzen arbeiten könnte. button ist ein ganz schlechter Name für eine Liste mit mehreren Buttons. Lisren werden üblicherweise mit der Mehrzahlform benannt.

Re: rechte Maustaste für button in einem Tkinter Grid abfragen

Verfasst: Montag 7. Oktober 2019, 08:38
von msmn
@Sirius3:
".. Wie das geht, hast Du doch schon bei 1) gezeigt. Mit partial kannst Du weitere Parameter mit festem Wert übergeben..."
wie sollte dann bitte die Befehlszeile lauten, dass ich mit "partial und bind" auch die "Art der Maustaste herausfinde"?

Listennamen were ich übrigens anpassen...danke für den Hinweis
Manfred

Re: rechte Maustaste für button in einem Tkinter Grid abfragen

Verfasst: Montag 7. Oktober 2019, 08:50
von Sirius3
Du findest nicht die Art der Maustaste raus, weil die schon durch bind vorgegeben ist, aber Du findest mit partial den Knopf heraus, den Du rechts-gedrückt hast.

Re: rechte Maustaste für button in einem Tkinter Grid abfragen

Verfasst: Montag 7. Oktober 2019, 09:54
von msmn
@Sirius3:
es ist korrekt, dass ich mit "partial" (siehe 1 oben) den jeweiligen Button genau herausfinden kann....
und dass ich mit "bind" (siehe 2 oben) herausfinden kann, ob zB die rechte Maustaste geklickt wurde.

mit meinen bescheidenen Tkinter-Kenntnissen, kann ich eben jeder dieser Funktionen SEPARAT aufrufen...ich schaffe es aber leider bis jetzt nicht, diese 2 Funktionen miteinander "zu verknüpfen" (es läuft bei mir nur "ENTWEDER die eine"...."ODER die andere" Funktion ab)

irgendwie fehlt mir das Verständnis, wie ich zB "bind" so in "command=partial..." einbaue, dass ich eben beide Informationen GLEICHZEITIG habe.

Deswegen meine Bitte, wie solch eine Befehlszeile lauten könnte...

Danke
Manfred

Re: rechte Maustaste für button in einem Tkinter Grid abfragen

Verfasst: Montag 7. Oktober 2019, 17:43
von Sirius3
Ich weiß nicht, wie ich da noch helfen kann, wenn die Grundlagen zu Funktionen fehlen.
Wenn Du die zweite Maustaste benutzen willst, kannst Du nicht command benutzen, sondern mußt bind benutzen, daher weiß ich nicht, was Du in command einbauen willst.

Re: rechte Maustaste für button in einem Tkinter Grid abfragen

Verfasst: Dienstag 8. Oktober 2019, 05:06
von msmn
@Sirius3:
ich "muss" nicht unbedingt "command benutzen"....

meine ursprüngliche Frage lautet: wie kann man denn bitte für den jeweiligen Button in einem Tkinter Grid abfragen, welche (bzw ob die "rechte") Maustaste gedrückt wurde.
Anmerkung: "linke Taste" scheint ja Standard zu sein...und funktioniert
mit "bind" konnte ich auch die "rechte" Taste abfragen, ABER das geht ja nur für das gesamte Widget ...ich würde aber auch wissen muessen, WELCHER Button gedrückt wurde...

trotzdem natürlich: Danke für Deine Bemühungen!

@Alle: kann mir bitte jemand anders sagen, wie das gehen würde?

Danke
Manfred

Re: rechte Maustaste für button in einem Tkinter Grid abfragen

Verfasst: Dienstag 8. Oktober 2019, 06:55
von Sirius3
Es hilft nichts, wenn Du Deine Frage wiederholst. Die Antwort bleibt die selbe. Wenn Du verstanden hast, wie die Funktion bei command die Information bekommt, welcher Button gedrückt wurde, kannst Du das selbe Prinzip auch bei bind anwenden. Dazu mußt Du aber erst verstehen, wie partial funktioniert. Das geht am besten, wenn Du das selbst an einfachen Beispielen ausprobierst.

Re: rechte Maustaste für button in einem Tkinter Grid abfragen

Verfasst: Dienstag 8. Oktober 2019, 10:56
von __deets__
@msmn: du hast diese zwei Zeilen Code selbst praesentiert:

Code: Alles auswählen

button[x].config(command=partial(funktion_mausklick, button[x]))
button[x].bind("<Button-3>", function_rightclick)
Eine davon kann den Button bestimmen. Eine nicht. Wieso hast du die erste Zeile so geschrieben? Was macht die anders? Warum sollte das bei dem bind nicht funktionieren?