@hideo_kojima

Как исправить ошибку 'NoneType' object has no attribute 'get'?

Необходимо создать дополнительное окно, в котором будут указаны координаты для создания рисунка на холсте, и при прожатии кнопки в дополнительном окне фигура рисовалась, а окно исчезало, проблема возникла при попытке получить значения из созданных полей entry, что я не пытался с ними сделать метод get() не получается к ним применить.
from tkinter import *

root = Tk()
ff=Frame(root).pack(side=BOTTOM)
fff=Frame(root).pack(side=TOP)
c = Canvas(fff, width=300, height=200, bg="white")
c.pack()
def about():
    a = Toplevel()
    a.geometry('180x150')
    Label(a, text="x1").place(relx=0.3,rely=0.1,anchor="n")
    Label(a, text="x2").place(relx=0.3, rely=0.26, anchor="n")
    ent1=Entry(a,width=4).place(relx=0.42,rely=0.1,anchor="n")
    ent2=Entry(a, width=4).place(relx=0.42, rely=0.26, anchor="n")
    Label(a, text="y1").place(relx=0.6, rely=0.1, anchor="n")
    Label(a, text="y2").place(relx=0.6, rely=0.26, anchor="n")
    ent3=Entry(a, width=4).place(relx=0.73, rely=0.1, anchor="n")
    ent4=Entry(a, width=4).place(relx=0.73, rely=0.26, anchor="n")
    a.var = IntVar()
    a.var.set(0)
    a.radiobut1=Radiobutton(a,text='Прямоугольник',variable=a.var,value=0).place(relx=0.52, rely=0.38, anchor="n")
    a.radiobut2=Radiobutton(a,text='Овал',variable=a.var, value=1).place(relx=0.52, rely=0.54, anchor="n")
    def Draw():
        x1 = ent1.get()
        x2 = ent2.get()
        y1 = ent3.get()
        y2 = ent4.get()
        if a.var.get()==0:
            c.create_rectangle(x1, y1, x2, y2, fill='yellow', outline='green', width=3, activedash=(5, 4))
        if a.var.get()==1:
            c.create_oval(x1, y1, x2, y2, fill='yellow', outline='green',width=3, activedash=(5, 4))
    a.but1 = Button(a, text="Нарисовать", width=15, height=1,command=Draw).place(relx=0.52, rely=0.7, anchor="n")
button=Button(ff,width=45,height=1,text="Добавить",command=about).pack()

root.mainloop()
  • Вопрос задан
  • 244 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Метод place ничего не возвращает. В строке
ent1=Entry(a,width=4).place(relx=0.42,rely=0.1,anchor="n")
создаётся объект поля, но никуда не сохраняется. Надо разделить создание поля и размещение его на форме:
ent1=Entry(a,width=4)
ent1.place(relx=0.42,rely=0.1,anchor="n")
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы