[Python-de] Tkinter und bind

Albert Hermeling Albert.Hermeling at t-online.de
Sat May 4 19:01:11 EDT 2002


Guten Abend,

beim Experimentieren mit Tkinter habe ich folgendes kleine Python Skript 
geschrieben:

#!/usr/bin/python

from Tkinter import *


def prn(s):
    print "Ich bin der Button", s
    
names=["A","B","C","D","Ende","F","G","H","I"]    

class Gridder:
    def __init__(self,w):
        n = 0
        for i in range(3):
            for j in range(3):
                item=Button(w,text=names[n])
                if names[n] == "Ende":
                    item["command"] = root.destroy
                    item.bind("<Button-3>", lambda x=names[n] : prn(x) )
                else:
                    item["command"] = lambda x=names[n] : prn(x)
                item.grid(row=i,column=j,sticky=E+W+N+S)
                n = n+1

root=Tk()
grc = Gridder(root)        

root.mainloop()

Dieses Skript erzeugt neun Buttons. Acht Buttons rufen die Funktion "prn" auf 
wenn man sie mit der Linken Maustaste an klickt. Der Button Ende, beendet das 
Skript. Das Funktioniert bis hier her auch Perfekt.

Jetzt möchte ich aber das der Ende Button seinen Namen ausgibt wenn man mit 
der rechten Maustaste den Button anklickt. Zu diesem Zweck habe ich den 
entsprechenden Button an die Methode bind gebunden. Klicke ich jetzt mit der 
rechten Maustaste den Button an bekomme ich folgende Meldung zurück 
geliefert:

Ich bin der Button <Tkinter.Event instance at 0x822c4e4>

stehen sollte da eigentlich "Ende"

Weiß einer woran das liegt??

Ich arbeite mit Python 2.2 unter Suse Linux 8

Schon mal vielen Dank im Voraus.

mfg

Albert Hermeling



More information about the Python-de mailing list