質問

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

役に立ちましたか?

解決

けれど イーライ・コートライトの プログラムは正常に動作します¹、実際に必要なのは、インスタンス化時に設定できた属性をインスタンス化後に再構成する方法だけです¹。これを行うには、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] を使用することに関心がある場合は、(既存のコードを複製して) keypress イベントも実装する必要があります。の設定 command オプションスルー .configure はるかに簡単です。

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

他のヒント

もちろん;ただ使用してください 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()
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top