PopUp (command?)

Fragen zu Tkinter.
Antworten
Alexci
User
Beiträge: 44
Registriert: Dienstag 18. April 2006, 23:08

Hallo,

Ich habe nur ein kleines problem mit dem PopUp menue. Kann man an stelle von command eine variable erstellen? Z.b. wenn man auf eine Numer klickt (siehe unten) soll die Nummer im Python Shell ausgedruckt werden.

Danke!

Gruesse,
Aleksandar


Code: Alles auswählen

from Tkinter import *

root = Tk()
w = Label(root, text="Right-click to display menu", width=40, height=20)
w.pack()

def next():
    print # es soll die Nummer schreiben auf die Man geklickt hat
def do_popup(event):
    popup = Menu(root, tearoff=0)
    for i in range (1,20):
        popup.add_command(label=i, command=next)
    try:
        popup.tk_popup(event.x_root+35, event.y_root+10, 0)
    finally:
        popup.grab_release()

w.bind("<Button-3>", do_popup)
mainloop()
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

Hi Alexci,

ich glaube, das ist sowas wie die Königsübung in Python. :D
Du brauchst nur für jeden Command-Button eine eigene Funktion zu definieren:

Code: Alles auswählen

    for i in range (1,20):
        def next(i = i): print i
        popup.add_command(label=i, command=next)
... und die globale next-Funktion in Z8f. entfernen.

Was passiert? In jedem Schleifendurchgang wird eine neue, lokale Funktion angelegt und an den Command-Button übergeben.

:!: Ganz wichtig ist die Parameterübergabe "i = i", womit ein funktionseigener Name angelegt wird!!

Grüße,
der Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Alexci
User
Beiträge: 44
Registriert: Dienstag 18. April 2006, 23:08

Es funktioniert und ich habe es werstanden, hab auch nicht am Profi gezweifelt. :D

Nochmahls Danke!



Aleksandar
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

Hi Alex!
Alexci hat geschrieben:Es funktioniert und ich habe es werstanden, hab auch nicht am Profi gezweifelt. :D

Nochmahls Danke!
Aber an mir, was? :wink:
Doch ich muss Dir danken, das war ein hervorragendes! Beispiel für pop-ups, mit denen ich noch nie gearbeitet habe, die aber durch Dich jetzt in viele meiner Programme einfließen werden. :)

So hilft man sich hier eben gegenseitig.

Grüße,
der Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Antworten