PythonのTkinterボタンのコマンドメソッドを変更する
-
09-06-2019 - |
質問
新しい 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()
所属していません StackOverflow