Python tkinterの複数のチェックボタンで初期値を設定したい

前提

Pythonのtkinterで複数のチェックボタンの初期値を設定したいと思っていますが、うまく動きません。
チェックボタンに初期値が反映される条件など教えていただければと思います。

実現したいこと

該当のソースコード

Python

1from tkinter import *2from tkinter import ttk 3 4def main():5 6 global root 7 root = Tk()8 root.title("test")9 window_main()10 11 root.mainloop()12 13def window_main():14 root.geometry('650x300')15 frame = ttk.Frame(root, width=650, height=300)16 frame.pack()17 18 label_chk1 = ttk.Label(frame,text = 'chk1')19 chk1_check = BooleanVar()20 chk_chk1 = ttk.Checkbutton(frame,variable=chk1_check)21 label_chk2 = ttk.Label(frame,text = 'chk2')22 chk2_check = BooleanVar()23 chk_chk2 = ttk.Checkbutton(frame,variable=chk2_check)24 label_chk3 = ttk.Label(frame,text = 'chk3')25 def chk3_check_change():26 if chk3_check.get():27 entry_chk3_skill.config(state='normal')28 else:29 entry_chk3_skill.config(state='disabled')30 chk3_check = BooleanVar()31 chk_chk3 = ttk.Checkbutton(frame,command=chk3_check_change,variable=chk3_check)32 label_chk4 = ttk.Label(frame,text = 'chk4')33 chk4_check = BooleanVar()34 chk_chk4 = ttk.Checkbutton(frame,variable=chk4_check)35 label_chk3_skill = ttk.Label(frame,text = 'chk3Entry')36 entry_chk3_skill = ttk.Entry(frame,width=5,state='disabled')37 38 39 label_chk1.place(x=10,y=11)40 chk_chk1.place(x=40,y=10)41 label_chk2.place(x=110,y=11)42 chk_chk2.place(x=140,y=10)43 label_chk3.place(x=200,y=11)44 chk_chk3.place(x=230,y=10)45 label_chk4.place(x=300,y=11)46 chk_chk4.place(x=330,y=10)47 label_chk3_skill.place(x=200,y=31)48 entry_chk3_skill.place(x=280,y=30)49 50if __name__ == "__main__":51 main()

試したこと

以下のように呼び出す関数内にget()を書けば初期値が反映されるようになる。
chk3_check_change()の外に書いても反映されない

def chk3_check_change(): if chk4_check.get(): pass if chk3_check.get(): entry_chk3_skill.config(state='normal') else: entry_chk3_skill.config(state='disabled')

補足情報(FW/ツールのバージョンなど)

python 3.11.1

コメントを投稿

0 コメント