Добавить переключатель в Tkinter - PullRequest
1 голос
/ 15 октября 2011

Мой друг и я работаем над созданием окна, которое отображает 4 переключателя, текст, и мы пытаемся добавить две кнопки внизу.

Вот наш код:

from Tkinter import *

import time

class App:

    def __init__(self, master):


        frame = Frame(master)
        frame.pack()

        v = IntVar()

        Radiobutton(master, text="0 for not at all", variable=v, value=1).pack(side=TOP)

        Radiobutton(master, text="1 for somewhat", variable=v, value=2).pack(side=TOP)

        Radiobutton(master, text="2 for moderatly", variable=v, value=3).pack(side=TOP)

        Radiobutton(master, text="3 for a lot", variable=v, value=4).pack(side=TOP)

        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"

w = Label(master, text="1. Anxiety, nervousness, worry or fear")
w.pack()

master = Tk()


master.mainloop()

Запуск этого дает нам следующую ошибку:

Traceback (most recent call last):
  File "/Volumes/CHROME USB/STORAGE/TKinker GUI/Radiobutton example.py", line 36,
  in <module>
    w = Label(master, text="1. Anxiety, nervousness, worry or fear")
NameError: name 'master' is not defined

Ответы [ 2 ]

3 голосов
/ 15 октября 2011

Вам нужно на самом деле инициализировать класс App, чтобы он что-то делал.Метка должна идти внутри метода init вместе со всеми другими виджетами.Обычно вы помещаете все виджеты в рамку (например, Radiobutton (frame, text = ...), но если вы не собираетесь использовать рамку, создавать ее не нужно. И выравнивание радиокнопок (сanchor = "w") вместо центрирования заставляет их выглядеть чище.

from Tkinter import *
import time

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

        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()
0 голосов
/ 15 октября 2011

master - аргумент, переданный App.__init__();он не существует вне этого, например, в глобальной области, где вы пытаетесь его использовать.

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