tkinter Radiobuttonでコンボボックスのstateを変更したい
python初心者です。pythonのtkinterでGUIを作成しています。
2つのラジオボタンのうち片方を選択すると2つあるコンボボックスの一方が使えるようになり、もう一方は使えず、
もう一方のラジオボタンを選択すると先程使えた方が使えなくなり、使えなかった方が使えるようにしたいです。
いろいろな記事の方法を試してみましたが、私はclassを使っているせいか、うまく動作しませんでした。
ラジオボタンの選択が変わった時点でstateを変更したいので、commandで関数を実行する方法を考えました。
該当のソースコード
python
1import tkinter as tk 2import tkinter.ttk as ttk 3 4class tkinter(tk.Frame): 5 def __init__(self,master): 6 val = tk.IntVar() 7 val.set(0) 8 label = tk.LabelFrame(self).pack() 9 rdo1 = tk.Radiobutton(label,text = "radiobutton1",variable = val,value = 0,command = lambda : (A,B) = self.funt1(val.get())) 10 rdo1.grid(row = 0,column = 0) 11 rdo2 = tk.Radiobutton(label,text = "radiobutton2",variable = val,value = 1,command = lambda : (A,B) = self.func1(val.get())) 12 rdo2.grid(row = 1,column = 0) 13 cmb1 = ttk.Combobox(label,state = A).grid(row = 0,column = 1) 14 cmd1["values"] = ["0","1","2"] 15 cmb2 = ttk.Combobox(label,state = B).grif(row = 1,column = 1) 16 cmd2["values"] = ["3","4","5"] 17 18 def func1(self,val): 19 if val == 0: 20 A = 'readonly' 21 B = 'disabled' 22 elif val == 1: 23 A = 'disabled' 24 B = 'readonly' 25 return A,B 26 27if __name__ == '__main__': 28 b = tkinter() 29 b.pack() 30 b.mainloop()
SyntaxErrorがでてきているので、そもそもラジオボタンのコマンドで戻り値を含む関数を実行すること自体不可能なのでしょうか?
お手数をおかけしますが、ご回答よろしくお願いします。
lambdaの中では代入は書けません。それはともかく動作する状態のコードを貼っていただけると助言しやすいです。
回答1件
あなたの回答
tips
プレビュー