Tkinter チュートリアル - ボタン Button

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 ボタンコマンドコールバック
ユーザーがボタンを押すと、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))
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn