2008-09-16 9 views

Antwort

15

Obwohl Eli Courtwright's Programm funktioniert fine¹, was Sie wirklich scheinen allerdings zu wollen, ist nur eine Möglichkeit, beliebige Attribute nach der Instanzierung neu zu konfigurieren, die Sie festgelegt haben könnten, wenn Sie instantiated² . Wie Sie dies tun, ist über die configure() -Methode.

¹ "gut", wenn Sie nur die Maus verwenden; Wenn Sie sich für das Tabbing und die Verwendung von [Leertaste] oder [Eingabetaste] für Schaltflächen interessieren, müssen Sie auch die Tastendruckereignisse implementieren (Duplizieren von bereits vorhandenem Code). Das Einstellen der command Option durch .configure ist viel einfacher.

² Das einzige Attribut, das nach Instanziierung nicht geändert werden kann, ist name.

1

Sicher; Verwenden Sie einfach die Methode bind, um den Rückruf nach dem Erstellen der Schaltfläche festzulegen. Ich habe gerade das folgende Beispiel geschrieben und getestet. Sie können dies ein schönes Tutorial auf tun bei http://www.pythonware.com/library/tkinter/introduction/events-and-bindings.htm

from Tkinter import Tk, Button 

root = Tk() 
button = Button(root, text="Click Me!") 
button.pack() 

def callback(event): 
    print "Hello World!" 

button.bind("<Button-1>", callback) 
root.mainloop() 
+1

Die Befehlskonfigurationsoption wird normalerweise für das Drücken von Tasten verwendet. Die Callback-Funktion benötigt kein Ereignisargument. – tzot

+3

Die Verwendung einer Bindung ist keine besonders gute Lösung IMO. Genau dafür ist die Option -Kommando zuständig. Wenn Sie dies in einer Bindung tun, verlieren Sie außerdem die Möglichkeit, dass der Rückruf per Tastaturüberlauf aufgerufen wird, es sei denn, Sie fügen auch Tastenbindungen hinzu. Es wird ziemlich schnell ziemlich chaotisch, also bleib bei - Befehl. –