#python #tkinter
#python #tkinter
Вопрос:
Мы с моим другом работаем над созданием окна, в котором отображаются 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
Ответ №1:
Вам нужно фактически инициализировать класс 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()
Ответ №2:
master
передается аргумент App.__init__()
; он не существует вне этого, например, в глобальной области, где вы пытаетесь его использовать.
Комментарии:
1. Спасибо за ваш комментарий, Игнасио, хотя я все еще слишком новичок:-( чтобы понять, что вы имеете в виду. Большая часть нашего кода была вырезана и вставлена из примеров из Интернета. Однако мы быстро учимся:-D P.S. STACKOVERFLOW.COM ЭТО ПОТРЯСАЮЩЕ!