18

command新しいButtonオブジェクトを作成しましたが、作成時にオプションを指定しませんでした。オブジェクトが作成された後にコマンド(onclick)機能を変更する方法はTkinterにありますか?

4

2 に答える 2

34

Eli Courtwright のプログラムは問題なく動作します¹。これを行う方法は、configure() メソッドを使用することです。

from Tkinter import Tk, Button

def goodbye_world():
    print "Goodbye World!\nWait, I changed my mind!"
    button.configure(text = "Hello World!", command=hello_world)

def hello_world():
    print "Hello World!\nWait, I changed my mind!"
    button.configure(text = "Goodbye World!", command=goodbye_world)

root = Tk()
button = Button(root, text="Hello World!", command=hello_world)
button.pack()

root.mainloop()

¹ マウスのみを使用する場合は「問題ありません」。ボタンでのタブ移動と [Space] または [Enter] の使用に関心がある場合は、(既存のコードを複製して) キープレス イベントも実装する必要があります。commandオプションを設定する.configure方がはるかに簡単です。

² インスタンス化後に変更できない唯一の属性はname.

于 2008-09-16T01:24:37.087 に答える
2

もちろん; bindボタンが作成された後、メソッドを使用してコールバックを指定するだけです。以下の例を書いてテストしました。これを行うための優れたチュートリアルが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()
于 2008-09-16T01:12:22.860 に答える