Seite 1 von 1

PopUp (command?)

Verfasst: Montag 31. Juli 2006, 22:27
von Alexci
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()

Verfasst: Dienstag 1. August 2006, 20:52
von Michael Schneider
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

Verfasst: Mittwoch 2. August 2006, 00:40
von Alexci
Es funktioniert und ich habe es werstanden, hab auch nicht am Profi gezweifelt. :D

Nochmahls Danke!



Aleksandar

Verfasst: Mittwoch 2. August 2006, 06:55
von Michael Schneider
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