
【スポンサーリンク】
ウィジェットの有効・無効を設定
ウィジェットのオプションstateを「disable」に設定することで、ウィジェットを無効化することができる。以下、ボタンウィジェットを無効化した状態で表示した例を示す。
import tkinter root = tkinter.Tk() #ボタン b = tkinter.Button( root, text="button", state="disable", #無効化設定 ) b.pack() root.mainloop()

stateオプションを「disable」にすることで、無効化設定を行っている。表示されたボタンは灰色で、クリックしてボタンを押すことができない状態になっている。
【スポンサーリンク】
10回クリックすると無効化されるボタン
生成時ではなく、一定回数クリックしたときに無効化されるボタンを作成する例を示す。
import tkinter root = tkinter.Tk() #ボタンクリック時に実行する関数 def disable_clicked(): 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, #初期値 command=disable_clicked, #クリック時に実行する関数 ) b.pack() root.mainloop()
実行するとボタンが一つ表示され、クリックするとクリック回数がボタン上に表示される。クリック回数が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回に到達するとウィジェットは無効化されるが、クリックしてもカウントは継続され、関数が実行されていることが分かる。

【スポンサーリンク】