Tkinter ボタンの状態を変更する方法

胡金庫 2022年1月22日
Tkinter ボタンの状態を変更する方法

Tkinter ボタンは二つの状態があります。

  • NORMAL - ユーザーはこのボタンをクリックできます
  • DISABLED -ユーザーはこのボタンはクリックできません
try:
    import Tkinter as tk
except:
    import tkinter as tk


app = tk.Tk()
app.geometry("300x100")
button1 = tk.Button(app, text="Button 1", state=tk.DISABLED)
button2 = tk.Button(app, text="EN/DISABLE Button 1")
button1.pack(side=tk.LEFT)
button2.pack(side=tk.RIGHT)
app.mainloop()

左のボタンは無効(淡色表示)で、右のボタンは正常です。

Tkinter ボタン状態 - 無効と正常

状態は辞書(dictionary)のような方法でも構成のような方法でも修正できます。

try:
    import Tkinter as tk
except:
    import tkinter as tk


def switchButtonState():
    if button1["state"] == tk.NORMAL:
        button1["state"] = tk.DISABLED
    else:
        button1["state"] = tk.NORMAL


app = tk.Tk()
app.geometry("300x100")
button1 = tk.Button(app, text="Python Button 1", state=tk.DISABLED)
button2 = tk.Button(app, text="EN/DISABLE Button 1", command=switchButtonState)
button1.pack(side=tk.LEFT)
button2.pack(side=tk.RIGHT)
app.mainloop()

button 2 をクリックすることにより、switButotonState 関数を呼び出して button 1 状態を DISABLED から NORMAL に切り替えたり、逆に切り替えたりします。

Tkinter ボタンの状態切替-無効と正常の間

state は Tkinter ボタンウィジェットのオプションです。すべてのウィジェットのオプションは Button 辞書のキーです。

def switchButtonState():
    if button1["state"] == tk.NORMAL:
        button1["state"] = tk.DISABLED
    else:
        button1["state"] = tk.NORMAL

Button 辞書の state の値を更新することにより、ボタンの state 状態が更新されました。

state は、Button オブジェクトを変更する config 方法で変更することもできます。したがって、switch ButonState() 関数も以下のように実現できます。

def switchButtonState():
    if button1["state"] == tk.NORMAL:
        button1.config(state=tk.DISABLED)
    else:
        button1.config(state=tk.NORMAL)

さらに、文字列 normaldisabled を使って、状態を切り替えることもできます。tk.NORMALtk.DISABLED を使わなくてもいいです。

著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook

関連記事 - Tkinter Button