Python Code Notes

Information by python engineer

【tkinter】ウィジェットを無効化する方法【Python】

ウィジェットのstateオプションを切り替えることで、そのウィジェットを無効化・有効化することができます。

以下はチェックボックスを利用した有効化・無効化例です。 www.python-beginners.com


【スポンサーリンク】


ウィジェットの有効・無効を設定

ウィジェットのオプションstateを「disable」に設定することで、ウィジェットを無効化することができます。  以下、ボタンウィジェットを無効化した状態で表示した例を示します。

import tkinter

root = tkinter.Tk()

#ボタン
b = tkinter.Button(
    root,
    text="button",
    state="disable",    #無効化設定
)
b.pack()

root.mainloop()

stateオプションを「disable」にすることで無効化されて、表示されたボタンは灰色になります。  この状態では、ボタンをクリックしても関数は実行されません。

[↑ 目次へ]


【スポンサーリンク】


10回クリックすると無効化されるボタン

次に、一定回数クリックしたときに無効化されるボタンを作成する例を示します。

how to change widge's state

実行するとボタンが一つ表示され、クリックするとクリック回数がボタン上に表示されます。  クリック回数が10回に達すると、ボタンウィジェットは無効化されます。

[↑ 目次へ]


【スポンサーリンク】


無効化できない例

bindメソッドを用いて関数と紐づけた場合は、ウィジェットを無効化しても関数は実行されてしまいます。  以下、先ほどの例を用いて、bindメソッドで関数と紐づけた例を示します。

import tkinter

root = tkinter.Tk()

#ボタンクリック時に実行する関数
def disable_clicked(event):
    count_num = b["text"] +1    #クリック回数をカウント
    b["text"] = count_num       #ボタンに表示

    #10に到達したらdisableに設定
    if count_num == 10:
        b["state"] = "disable"  #無効化


#ボタン
b = tkinter.Button(
    root,
    width=15,
    text=0,         #初期値
)
b.bind("<Button-1>", disable_clicked)   #関数とbind
b.pack()

root.mainloop()

今回の例では、クリック回数が10回に到達するとウィジェットは無効化されますが、クリックしてもカウントは継続されて関数が実行されてしまいます。

[↑ 目次へ]


【スポンサーリンク】