Tkinter チュートリアル - ボタン Button
胡金庫
2023年1月3日
Tkinter ボタンウィジェット
Tkinter ボタンウィジェットは、Tkinter ラベルウィジェットに非常に似ています。ラベルのオプションとほぼ同じオプションがありますが、これ以外にデフォルト default オプションがあります。基本ボタンの例を紹介してから、このデフォルトのオプション default
の詳細を紹介します。
以下のデモコードを使用して、2つの簡単なボタンを生成できます。
from sys import version_info
if version_info.major == 2:
import Tkinter as tk
elif version_info.major == 3:
import tkinter as tk
app = tk.Tk()
button1 = tk.Button(app, text="Python Label 1")
button2 = tk.Button(app, text="Python Label 2")
button1.pack(side=tk.LEFT)
button2.pack(side=tk.LEFT)
app.mainloop()
コードを実行すると、互いに関連する 2つのボタンが口に表示されます。
Tkinter ボタンデフォルトオプション default
ボタンのデフォルトオプション default は GUI におけるデフォルトボタンを通知します。簡単に言うと、ユーザーが Enter キーまたは Return キーを押すと自動的に呼び出されるボタンです。
Tkinter は、自動的にビルドするための再調整コマンドではないため、自動でビルドする必要があります。
Tkinter ボタンコマンドコールバック
ユーザーがボタンを押すと、command
オプションはコールバック関数を呼び出します。
command
オプションを有効にすると、ボタンの状態がアクティブになるはずです。そうでないと、Tkinter はコールバック関数を起動しません。from sys import version_info
if version_info.major == 2:
import Tkinter as tk
elif version_info.major == 3:
import tkinter as tk
app = tk.Tk()
labelExample = tk.Button(app, text="0")
def change_label_number():
counter = int(str(labelExample["text"]))
counter += 1
labelExample.config(text=str(counter))
buttonExample = tk.Button(app, text="Increase", width=30, command=change_label_number)
buttonExample.pack()
labelExample.pack()
app.mainloop()
メインウィンドウにボタンとラベルコントロールを作成しました。ボタンをクリックするたびに、ラベルテキストの数字に 1 を加算します。
def change_label_number():
counter = int(str(labelExample["text"]))
counter += 1
labelExample.config(text=str(counter))
change_label_number
この関数は、タグに表示されている数字を取得し、1 を追加してから、新しい数字を再びタグ文字として設定します。
buttonExample = tk.Button(app, text="Increase", width=30, command=change_label_number)
この文は、ボタンとコールバック関数 change_label_number
をバインドします。
ボタンオプションの関数名には括弧がありません。
引数を持つ Tkinter ボタンコマンドコールバック関数
もし、フィードバック関数がパラメータを入力する必要があるなら、functools
中の partial
オブジェクトが必要です。partial
オブジェクトは、位置パラメータ args
とキーワードパラメータ keywords
を有する呼び出し可能なオブジェクトです。
以下のコードセグメントは、ボタンコマンドでこのパーティション機能を使用する方法を示します。
def change_label_number(num):
counter = int(str(labelExample["text"]))
counter += num
labelExample.config(text=str(counter))
buttonExample = tk.Button(
app, text="Increase", width=30, command=partial(change_label_number, 2)
)