🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Q&A

解決済

1回答

523閲覧

[Python3] tkinter, 複数チェックボタンの情報取得

3265462164

総合スコア67

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

0グッド

0クリップ

投稿2019/09/19 08:20

一番下のコードのように複数あるチェックボタンの情報取得に関して教えてください。

仮に、「東京」だけのチェック情報を取得するのであれば、

Python

1 2def check_tokyo(): 3if val1.get() == True: 4

で良いのかと思いますが、複数チェックボタンがあり二つ三つと選択される可能性がある場合のコードの書き方が解りません。
記述方法ご存知の方いらしたら、教えていただけないでしょうか。

よろしくお願いいたします。

Python

1 2from tkinter import * 3from tkinter import ttk 4 5root = Tk() 6root.title('人口') 7root.geometry("500x450+640+40") 8 9 10frame1 = ttk.Labelframe(root, text='地域選択', padding=5) 11frame1.grid(row=0, column=0, columnspan=1, padx=15, pady=10, sticky='w') 12 13frame2 = ttk.Labelframe(root, text='関東',padding=5) 14frame2.grid(row=1,column=0, columnspan=1, padx=15, pady=10, sticky='nw') 15 16frame3 = ttk.Labelframe(root, text='関西',padding=5) 17frame3.grid(row=1,column=1, columnspan=1, padx=10, pady=10, sticky='nw') 18 19 20selected_frame = IntVar() 21 22def change_selected_frame(): 23 if selected_frame.get() == 0: 24 25 for child in frame2.winfo_children(): 26 child.configure(state='enable') 27 for child in frame3.winfo_children(): 28 child.configure(state='disable') 29 30 elif selected_frame.get() == 1: 31 for child in frame2.winfo_children(): 32 child.configure(state='disable') 33 for child in frame3.winfo_children(): 34 child.configure(state='enable') 35 36 else: 37 for child in frame2.winfo_children(): 38 child.configure(state='disable') 39 for child in frame3.winfo_children(): 40 child.configure(state='disable') 41 42 43rb1 = ttk.Radiobutton(frame1, text='関東 ', 44 variable=selected_frame, 45 value=0, 46 command=change_selected_frame) 47rb1.grid(row=1,column=0,pady=5) 48 49rb2 = ttk.Radiobutton(frame1, 50 text='関西', 51 variable=selected_frame, 52 value=1, 53 command=change_selected_frame) 54rb2.grid(row=1,column=1,pady=5) 55 56 57# 関東の全てのチェックボックスをONにする関数 58def check_all_kanto_checkboxes(): 59 val1.set(True) 60 val2.set(True) 61 val3.set(True) 62 val4.set(True) 63 64# 関東の全てのチェックボックスをOFFにする関数 65def clear_all_kanto_checkboxes(): 66 val1.set(False) 67 val2.set(False) 68 val3.set(False) 69 val4.set(False) 70 71# 関西の全てのチェックボックスをONにする関数 72def check_all_kansai_checkboxes(): 73 val5.set(True) 74 val6.set(True) 75 val7.set(True) 76 77# 関西の全てのチェックボックスをOFFにする関数 78def clear_all_kansai_checkboxes(): 79 val5.set(False) 80 val6.set(False) 81 val7.set(False) 82 83btn1 = ttk.Button(frame2, text='全選択', padding=5, command=check_all_kanto_checkboxes) 84btn1.grid(row=5,column=0,pady=5) 85 86btn2 = ttk.Button(frame2, text='全解除', padding=5, command=clear_all_kanto_checkboxes) 87btn2.grid(row=5,column=1,pady=5) 88 89btn3 = ttk.Button(frame3, text='全選択', padding=5, command=check_all_kansai_checkboxes) 90btn3.grid(row=5,column=0,pady=5) 91 92btn4 = ttk.Button(frame3, text='全解除', padding=5, command=clear_all_kansai_checkboxes) 93btn4.grid(row=5,column=1,pady=5) 94 95btn5 = ttk.Button(text='集計', padding=5) 96btn5.grid(row=5,column=0,pady=5) 97 98btn6 = ttk.Button(text='キャンセル', padding=5) 99btn6.grid(row=5,column=1,pady=5) 100 101 102val1 = BooleanVar() 103val1.set(False) 104 105val2 = BooleanVar() 106val2.set(False) 107 108val3 = BooleanVar() 109val3.set(False) 110 111val3 = BooleanVar() 112val3.set(False) 113 114val4 = BooleanVar() 115val4.set(False) 116 117val5 = BooleanVar() 118val5.set(False) 119 120val6 = BooleanVar() 121val6.set(False) 122 123val7 = BooleanVar() 124val7.set(False) 125 126kt1 = ttk.Checkbutton(frame2, text='東京', variable=val1) 127kt1.grid(row=6,column=0, columnspan=1, padx=15, pady=5, sticky='w') 128 129kt2 = ttk.Checkbutton(frame2, text='神奈川', variable=val2) 130kt2.grid(row=7,column=0, columnspan=1, padx=15, pady=5, sticky='w') 131 132kt3 = ttk.Checkbutton(frame2, text='千葉', variable=val3) 133kt3.grid(row=8,column=0, columnspan=1, padx=15, pady=5, sticky='w') 134 135kt4 = ttk.Checkbutton(frame2, text='埼玉', variable=val4) 136kt4.grid(row=9,column=0, columnspan=1, padx=15, pady=5, sticky='w') 137 138 139ks1 = ttk.Checkbutton(frame3, text='大阪', variable=val5) 140ks1.grid(row=6,column=0, columnspan=1, padx=15, pady=5, sticky='w') 141 142ks2 = ttk.Checkbutton(frame3, text='兵庫', variable=val6) 143ks2.grid(row=7,column=0, columnspan=1, padx=15, pady=5, sticky='w') 144 145ks3 = ttk.Checkbutton(frame3, text='京都', variable=val7) 146ks3.grid(row=8,column=0, columnspan=1, padx=15, pady=5, sticky='w') 147 148 149selected_frame.set(-1) 150change_selected_frame() 151 152root.mainloop() 153 154

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

論理演算を使ってください

Python

1if val1.get() and val2.get(): 2 print("東京と神奈川の両方がTrue") 3 4if val1.get() or val2.get(): 5 print("東京と神奈川のどちらかがTrue") 6 7if (not val1.get()) and (not val2.get()): 8 print("東京と神奈川の両方ともFalse") 9 10if all([val1.get(), val2.get(), val3.get(), val4.get()]): 11 print("関東全てがTrue") 12 13if any([val1.get(), val2.get(), val3.get(), val4.get()]): 14 print("関東のどれかがTrue") 15 16if not any([val1.get(), val2.get(), val3.get(), val4.get()]): 17 print("関東の全てがFalse")

投稿2019/09/19 09:32

magichan

総合スコア15898

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

3265462164

2019/09/19 23:53

magichanさん、ありがとうございました! 論理演算、というもので想定している動作を行えそうです。 また倫理演算で検索すればさらに情報を得られそうなので、非常に助かりました。 どうも有難うございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問