【解決したいこと】
4択クイズの基礎となる画面を作成しているところです。
tkinterのradiobuttonを4つ用意し、選択したボタンが何かをget()を用いてLabelで表示しようとしているのですが、どのボタンを選択した場合でも「0」が返ってきます。どのようにすれば選択したボタンに応じた表示ができるでしょうか。
python
1import tkinter as tk 2 3item = ["選択肢A", "選択肢B", "選択肢C", "選択肢D"] 4 5def start(): 6 start.place_forget() 7 answer.place(x=200, y=100) 8 rdo1.place(x=200, y=150) 9 rdo2.place(x=200, y=180) 10 rdo3.place(x=200, y=210) 11 rdo4.place(x=200, y=240) 12 13def answer(): 14 m_label.place(x=300, y=200) 15 answer.place_forget() 16 rdo1.place_forget() 17 rdo2.place_forget() 18 rdo3.place_forget() 19 rdo4.place_forget() 20 menu.place(x=300, y=100) 21 22def menu(): 23 m_label.place_forget() 24 menu.place_forget() 25 start.place(x=100, y=100) 26 27root = tk.Tk() 28root.title("メニュー→問題→解答→メニュー") 29root.geometry("900x600") 30 31start = tk.Button(root, text="スタート", command=start) 32answer = tk.Button(root, text="解答画面へ", command=answer) 33menu = tk.Button(root, text="メニュー画面へ戻る", command=menu) 34var = tk.IntVar() 35rdo1 = tk.Radiobutton(root, value=0, variable=var, text=item[0]) 36rdo2 = tk.Radiobutton(root, value=1, variable=var, text=item[1]) 37rdo3 = tk.Radiobutton(root, value=2, variable=var, text=item[2]) 38rdo4 = tk.Radiobutton(root, value=3, variable=var, text=item[3]) 39ch = var.get() 40m_label = tk.Label(root, text="あなたは「"+str(ch)+"」を選択しました。") 41 42start.place(x=100, y=100) 43 44root.mainloop() 45
【エラーコード】
「arom-runner」ではエラーコードは表示されていません。
【試したこと】
以下のコードを関数「start」に入れて実行してみましたが、関数「answer」で「NameError: name 'm_label' is not defined」とエラーが表示されてしまいました。
python
1var = tk.IntVar() 2rdo1 = tk.Radiobutton(root, value=0, variable=var, text=item[0]) 3rdo2 = tk.Radiobutton(root, value=1, variable=var, text=item[1]) 4rdo3 = tk.Radiobutton(root, value=2, variable=var, text=item[2]) 5rdo4 = tk.Radiobutton(root, value=3, variable=var, text=item[3]) 6ch = var.get() 7m_label = tk.Label(root, text="あなたは「"+str(ch)+"」を選択しました。")
【使用環境】
mac(ver.10.13.2) python3.8.1 atom(テキストエディタ)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/20 07:42