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

Tkinter ボタンウィジェット

Tkinter ボタンウィジェットは、Tkinter ラベルウィジェットに非常に似ています。ラベルのオプションとほぼ同じオプションがありますが、これ以外にデフォルト default オプションがあります。基本ボタンの例を紹介してから、このデフォルトのオプション default の詳細を紹介します。

以下のデモコードを使用して、2つの簡単なボタンを生成できます。

Tkinter Button_Basic.py
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 教程-基本按钮按钮

Tkinter ボタンデフォルトオプション default

ボタンのデフォルトオプション default は GUI におけるデフォルトボタンを通知します。簡単に言うと、ユーザーが Enter キーまたは Return キーを押すと自動的に呼び出されるボタンです。

Tkinter ボタンコマンドコールバック

ユーザーがボタンを押すと、command オプションはコールバック関数を呼び出します。

Tkinter Button_command callback.py
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 を加算します。

Tkinter コマンドコールバック

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))
comments powered by Disqus