1. ホーム
  2. python

[解決済み] TKinterのボタンの無効化/有効化

2022-02-02 20:45:17

質問

スイッチのようなボタンを作りたいのですが、無効化ボタンをクリックすると、そのボタンが無効になります。 を無効にします(動作します)。そして、もう一度押せば、また有効になります。

if, elseなどを試しましたが、うまくいきませんでした。 以下はその例です。

from tkinter import *
fenster = Tk()
fenster.title("Window")

def switch():
    b1["state"] = DISABLED

#--Buttons
b1=Button(fenster, text="Button")
b1.config(height = 5, width = 7)
b1.grid(row=0, column=0)    

b2 = Button(text="disable", command=switch)
b2.grid(row=0,column=1)

fenster.mainloop()

解決方法は?

Tkinter Button は3つの状態を持ちます。 active, normal, disabled .

を設定します。 state オプションを disabled を指定すると、ボタンがグレーアウトして反応しなくなります。これには、値 active マウスがその上にあるとき、デフォルトは normal .

これを使えば、ボタンの状態をチェックして、必要なアクションを起こすことができます。以下は、動作するコードです。

from tkinter import *

fenster = Tk()
fenster.title("Window")

def switch():
    if b1["state"] == "normal":
        b1["state"] = "disabled"
        b2["text"] = "enable"
    else:
        b1["state"] = "normal"
        b2["text"] = "disable"

#--Buttons
b1 = Button(fenster, text="Button", height=5, width=7)
b1.grid(row=0, column=0)    

b2 = Button(text="disable", command=switch)
b2.grid(row=0, column=1)

fenster.mainloop()