
前回、Pythonでボタンの設置方法を記しました。
今回は、項目のON/OFFを切り替えるチェックボックスを付ける方法を記します。
Pythonのtkinterでチェックボックスを出す方法
from tkinter import *
from tkinter import ttk
#チェックボックスを押した時の反応用関数
def cb1_clicked():
print(flg1.get())
def cb2_clicked():
print(flg2.get())
#----------------------
win = Tk()
win.title('test')
#----------------------
#チェックボックス作成
#チェック1
flg1 = StringVar()
flg1.set('チェック1ON')
cb1 = ttk.Checkbutton(
win,
text='チェック1',
onvalue='チェック1ON',
offvalue='チェック1OFF',
variable=flg1,
command=cb1_clicked)
cb1.grid(row=1,column=1)
cb1.state(['selected'])
#チェック2
flg2 = StringVar()
flg2.set('チェック2OFF')
cb2 = ttk.Checkbutton(
win,
text='チェック2',
onvalue='チェック2ON',
offvalue='チェック2OFF',
variable=flg2,
command=cb2_clicked)
cb2.grid(row=1,column=2)
cb2.state(['disabled'])
cb2.state(['pressed'])
#----------------------
win.mainloop()
print(flg1.get())
print(flg2.get())
チェックボックスがあるウインドウを作成します。
表示はこのような物になります。
チェックボックスを押すたびにチェックがON/OFFされるボックスが2つ表示されます。
チェックボックス1は押すたびにチェックボタンの状態を文字で表示します。
チェックボックス2はクリック出来ない状態になっています。
tkinterで作ったチェックボックスを押した時の動作を作成
def cb1_clicked():
print(flg1.get())
tkinterのウインドウに設置したチェックボックスを押した時に動作する関数を作ります。
引数無し、返り値なしの関数です。
チェックボックスで操作される変数に初期値を入れる
flg1 = StringVar()
flg1.set('チェック1ON')
StringVarオブジェクト.set( 文字列 )
自由な文字列をStringVarオブジェクトに代入します。
tkinterのウインドウにチェックボックスを作成
cb1 = ttk.Checkbutton(
win,
text='チェック1',
onvalue='チェック1ON',
offvalue='チェック1OFF',
variable=flg1,
command=cb1_clicked)
チェックボックスのオブジェクトttk.Checkbutton( tkinterのオブジェクト , text=チェックボックスに書かれる文字列 , onvalue=チェックをONにした時に代入する文字 , offvalue=チェックをOFFにした時に代入する文字 , variable=StringVar()で作った結果を受け取る変数 , command=チェックボックスを押された時に動作する関数の名前 )
「チェックボックスに書かれる文字列」「チェックをONにした時に代入する文字」「offvalue=チェックをOFFにした時に代入する文字」と「StringVar()で作った結果を受け取る変数」「チェックボックスを押された時に動作する関数の名前」を入力してチェックボックスを作ります。
チェックボックスの状態をセットする
cb1.state(['selected']) cb2.state(['pressed']) cb2.state(['disabled'])
チェックボックスのオブジェクト.state([‘ステータスを示す文字‘])
チェックボックスの設定を変更します。
ステータスを示す文字には以下のような効果があります。
| pressed | 青い色にする |
| selected | チェック入りにする |
| disabled | 無効化 |
まとめ
チェックボックスのウインドウ内での位置や幅などはPythonでラベルとエディットボックスを付ける方法でやったように設定する事が出来ます。