質問: True: print('yes') else: print('No') chk.bind("<1>", kansu) # チェックボックスが左クリックされたときの関数を定義 tki.mainloop() プログラミン初心者です。 実際には複数のチェックボックスを設置し、クリックするごとにすべてのチェックボックスの状態を取得したいのですが クリックしたボックスの状態が反映されないため困っています。 教えていただけると助かります。
回答: `chk.bind("<1>")` はチェックボックスが左クリックされた瞬間(チェックボックスの状態が変化する直前)にコールバック関数がよばれますので、チェックボックスの状態がまだ反映されません。 チェックボックスの状態が変化したことを検知するには、`bind` を使うよりも、`Checkbutton()` のパラメータ `command` を使うと良いかと思います。 とりあえず以下にチェックボックスを2つ配置したサンプルを書きましたので参考にしてください。 ``` import tkinter tki = tkinter.Tk() # Tkクラス生成 tki.geometry('50x70') # 画面サイズ def kansu(): if bln1.get(): print('Button1: yes') else: print('Button1: No') if bln2.get(): print('Button2: yes') else: print('Button2: No') bln1 = tkinter.BooleanVar() bln2 = tkinter.BooleanVar() bln1.set('False') bln2.set('False') chk1 = tkinter.Checkbutton(tki, variable=bln1, text='1', command=kansu) chk2 = tkinter.Checkbutton(tki, variable=bln2, text='2', command=kansu) chk1.place(x=20, y=10) chk2.place(x=20, y=30) tki.mainloop() ```