Tkinterチェックボックスの状態を取得するにはどうすればよいですか?状態とは、チェックマークが付いているかどうかを取得することを意味します。
作成するとき、variable
キーワード引数を取ります。 IntVar
からTkinter
を渡します。チェックボックスをオンまたはオフにすると、var
に含まれる値が対応するブール状態に設定されます。これはvar.get()
としてアクセスできます:
チェック=> var.get()
チェックなし=> not var.get()
>>> root = Tkinter.Tk()
>>> var = Tkinter.IntVar()
>>> chk = Tkinter.Checkbutton(root, text='foo', variable=var)
>>> chk.pack(side=Tkinter.LEFT)
>>> var.get() #unchecked
0
>>> var.get() #checked
1
新しいを使用する場合* tkinterのttkモジュールでは、変数を割り当てずにチェックボタンの状態を読み書きできます。
import tkinter
from tkinter import ttk
tkwindow = tkinter.Tk()
chk = ttk.Checkbutton(tkwindow, text="foo")
chk.grid(column=0, row=0)
新しいチェックボックスのデフォルトは「alternate」(「half-checked」と呼ばれることもある)になっていることに注意してください。
.state()メソッドを使用して現在の状態を読み取ることができます。
>>> print(chk.state()) # half-checked
('alternate',)
>>> print(chk.state()) # checked
('selected',)
>>> print(chk.state()) # not checked
()
コードで状態を設定するには:
chk.state(['selected']) # check the checkbox
chk.state(['!selected']) # clear the checkbox
chk.state(['disabled']) # disable the checkbox
chk.state(['!disabled','selected']) # enable the checkbox and put a check in it!
そして、特定の状態を確認する便利な方法は次のとおりです。
chk.instate(['selected']) # returns True if the box is checked
私が見つけた2つのトリッキーなものがあります:
初期状態は「代替」であり、「選択」状態フラグを追加してもこの状態フラグはクリアされません。したがって、コード内でチェックボタンを切り替えたい場合は、最初に「代替」フラグをクリアする必要があります。
chk.state(['!alternate'])
を使用してチェックボタンを無効/有効にする場合
chk.state(['disabled'])
chk.state(['!disabled'])
その後、すべてが正常に動作します。ただし、これらの一般的な代替方法を使用する場合:
chk.config(state=tk.DISABLED)
chk.config(state=tk.NORMAL)
その後、「代替」フラグを再度アサートします。
チェックボタンに変数を割り当てた場合、この動作は発生しませんが、変数を割り当てたい場合、この答えはおそらく役に立ちません:)
* ttkはPython 2.7(Tk 8.5)で利用可能になりました。この 質問 は、古い標準ウィジェットと新しい「テーマ」ウィジェットの違いについて説明しています。