Как мне исправить синтаксис в моем коде, чтобы мои переключатели работали со словарем? - PullRequest
0 голосов
/ 17 октября 2011

Я пытаюсь узнать, как использовать словарь с переключателем. У меня есть код ниже, но когда я запускаю его, я получаю сообщение об ошибке.
Ошибка говорит:

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

Вот мой код:

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()):
    label = "%s - %s" % (i, choices[i])
    rb=Radiobutton(master, text=label, variable=v, value=i)
    rb.pack(side=TOP, anchor="w")

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

    v = IntVar()
    Radiobutton(master, text="0 for not at all", variable=v, value=1).pack(side=TOP, anchor="w")
    Radiobutton(master, text="1 for somewhat", variable=v, value=2).pack(side=TOP, anchor="w")
    Radiobutton(master, text="2 for moderatly", variable=v, value=3).pack(side=TOP, anchor="w")
    Radiobutton(master, text="3 for a lot", variable=v, value=4).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()

1 Ответ

1 голос
/ 17 октября 2011

Вы не предоставили важную информацию - в какой строке происходит ошибка.

Однако здесь вы видите ошибку отступа:

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().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...