前提・実現したいこと
4つのプルダウンメニューを作成し、1つ目のプルダウンメニューの取得値によって2つ目のプルダウンメニューのリスト内容が変わる。これを4つ全てのプルダウンメニューで行っていく。
例では、1つ目のプルダウンメニューに「上半身、下半身」を格納し、上半身を選ぶと2つ目のプルダウンメニューで「頭、胸、腹」が選べるようになる。2つ目のプルダウンメニューで頭を選ぶと、3つ目のプルダウンメニューで「口、目」が選べるようになる。というように連続してプルダウンメニューの値をあとのプルダウンメニューへ渡していきたい。
発生している問題・エラーメッセージ
2つ目までのプルダウンメニューのリストは取得できるが、3つ目のプルダウンメニューからリストを取得することができない
該当のソースコード
#プルダウンメニュー(1つ目)の選択によるリスト取得 def cb2_selected(event): var1 = cb1.get() if var1 == '上半身': val1 = ('頭', '胸', '腹') elif var1 == '下半身': val1 = ('脚') else: val1 = ('') cb2 = ttk.Combobox(main_win, state='readonly') cb2['value'] = val1 cb2.grid(row=1, column=1) #プルダウンメニュー(2つ目)の選択によるリスト取得 def cb3_selected(event): var2 = cb2.get() if var2 == '頭': val2 = ('口', '目') elif var2 == '胸': val2 = ('胸', '腕') elif var2 == '腹': val2 = ('へそ') elif var2 == '脚': val2 = ('もも', 'あし') else: val2 = ('') cb3 = ttk.Combobox(main_win, state='readonly') cb3['value'] = val2 cb3.grid(row=1, column=2) #プルダウンメニュー(3つ目)の選択によるリスト取得 def cb4_selected(event): var3 = cb3.get() if var3 == '口': val3 == ('歯') elif var3 == '目': val3 = ('瞳') elif == '胸': val3 = (' ') elif var3 == '腕': val3 = ('手', '指') elif var3 == 'へそ': val3 = (' ') elif var3 == 'もも': val3 = (' ') elif var3 == '足': val3 = ('指') else: val3 = ('') cb4 = ttk.Combobox(main_win, state='readonly') cb4['value'] = val3 cb4.grid(row=1, column=3) #プルダウンメニューのバインド設定 cb1.bind('<<ComboboxSelected>>', cb2_selected) cb1.bind('<<Return>>', cb2_selected) cb2.bind('<<ComboboxSelected>>', cb3_selected) cb2.bind('<<Return>>', cb3_selected) cb3.bind('<<ComboboxSelected>>', cb4_selected) cb3.bind('<<Return>>', cb4_selected)
試したこと
以前の投稿で、1つ目のプルダウンメニューの取得値によって2つ目のプルダウンメニューのリスト内容が変わっていく、という内容の質問があり、それを参考にして今回のプログラムを作成しましたがうまくいかなかった。
cb2の値をget()で取得できていないようですが、それの原因は不明。
補足情報(FW/ツールのバージョンなど)
実行環境
Windows10
Python 3.8.5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/19 01:31