Python 如何修复代码中的语法,使单选按钮与字典一起工作?

Python 如何修复代码中的语法,使单选按钮与字典一起工作?,python,dictionary,radio-button,tkinter,Python,Dictionary,Radio Button,Tkinter,我正在努力学习如何使用带有单选按钮的词典。我有下面的代码,但每次运行时都会出现错误。 错误显示: Traceback (most recent call last): File "/Volumes/CHROME USB/STORAGE/TKinker GUI/Radiobutton + Dictionary.py", line 16, in <module> for i in sorted(choices.keys()): NameError: name 'choices

我正在努力学习如何使用带有单选按钮的词典。我有下面的代码,但每次运行时都会出现错误。
错误显示:

Traceback (most recent call last):   File "/Volumes/CHROME
USB/STORAGE/TKinker GUI/Radiobutton + Dictionary.py", line 16, in
<module>
    for i in sorted(choices.keys()): NameError: name 'choices' is not defined

您尚未提供关键信息--错误发生在哪一行

但是,此处出现缩进错误:

for i in sorted(choices.keys()):
    label = "%s - %s" % (i, choices[i])
    rb=Radiobutton(master, text=label, variable=v, value=i)
    rb.pack(side=TOP, anchor="w")
for
循环中的行需要缩进

如果修正不能解决你的问题,请在我的答案上留下评论,并用行号更新你的问题,用修正的缩进更新代码


更新问题的更新答案:

请尝试以下代码:

from Tkinter import *
import time

class App:
    def __init__(self, master):
        w = Label(master, text="1. Anxiety, nervousness, worry or fear")
        w.pack()

        choices = {
        1: "not at all",
        2: "somewhat",
        3: "moderately",
        4: "a lot"
        }

        for i in sorted(choices.keys()):
            v = IntVar()
            label = "%s - %s" % (i, choices[i])
            rb=Radiobutton(master, text=label, variable=v, value=i)
            rb.pack(side=TOP, anchor="w")

        self.button = Button(master, text="BACK", fg="red", command=self.button6)
        self.button.pack(side=BOTTOM)
        self.button = Button(master, text="NEXT", fg="red", command=self.button5)
        self.button.pack(side=BOTTOM)

    def button6(self):
        print "Sam is awesome!GAJONGA"

    def button5(self):
        print "PYTHON FOR THE WIN! GIAN SAYS PYTHON = FILTHY"

master = Tk()
app = App(master)
master.mainloop()

这似乎就是你想要做的。仔细观察缩进,以及我移动
v=IntVar()
行的位置。

“for(I in sorted(choices.keys()):”在这一行中“:”最后的“:”导致了问题。修复缩进。另外,我不知道外圆括号是否有问题,但它们绝对不是必需的:
因为I in sorted(choices.keys()):
是正确的。查看我编辑的答案。我用新代码和新错误编辑了我的问题。感谢您的帮助:-)我在答案中添加了固定代码。如果它对您有帮助,请单击它旁边的复选标记接受。
from Tkinter import *
import time

class App:
    def __init__(self, master):
        w = Label(master, text="1. Anxiety, nervousness, worry or fear")
        w.pack()

        choices = {
        1: "not at all",
        2: "somewhat",
        3: "moderately",
        4: "a lot"
        }

        for i in sorted(choices.keys()):
            v = IntVar()
            label = "%s - %s" % (i, choices[i])
            rb=Radiobutton(master, text=label, variable=v, value=i)
            rb.pack(side=TOP, anchor="w")

        self.button = Button(master, text="BACK", fg="red", command=self.button6)
        self.button.pack(side=BOTTOM)
        self.button = Button(master, text="NEXT", fg="red", command=self.button5)
        self.button.pack(side=BOTTOM)

    def button6(self):
        print "Sam is awesome!GAJONGA"

    def button5(self):
        print "PYTHON FOR THE WIN! GIAN SAYS PYTHON = FILTHY"

master = Tk()
app = App(master)
master.mainloop()