Как разместить виджеты на холсте?

Я создаю проект для своей школы с использованием tkinter, который ориентирован на стоматологическую клинику. Код, который я разместил здесь, открывает окно, которое просит пациента войти или зарегистрироваться. Функция работает правильно, за исключением части холста. Когда функция выполняется; метки, текстовые поля и кнопки перемещаются из холста, который я поместил в корневое окно, как показано на скриншоте вывода. Какие изменения нужно сделать, чтобы надписи, текстовые поля и кнопки были на холсте, а не вне его?

def patclick(self):
       root = Tk()
       root.title("INSERT DETAILS")
       c = Canvas(root, bg="#dfe3ee")
       c.grid()
       titlelabel = Label(root, text="Please Login to continue")
       titlelabel.grid(row=0, columnspan=2)
       patnamelabel = Label(root, text="Full Name")
       patnamelabel.grid(row=1, column=0, sticky=E)
       self.patnameentry = Entry(root)
       self.patnameentry.grid(row=1, column=1)
       patpwlabel = Label(root, text="Password")
       patpwlabel.grid(row=2, column=0, sticky=E)
       self.patpwentry = Entry(root, show='*')
       self.patpwentry.grid(row=2, column=1)
       patloginbutt = Button(root, text="Login")
       patloginbutt.grid(row=3, columnspan=2)
       newpatlabel = Label(root, text="New Patient?")
       newpatlabel.grid(row=4, columnspan=2)
       patsignupbutt = Button(root, text="Sign Up")
       patsignupbutt.grid(row=5, columnspan=2)

Вывод после выполнения функции

1 ответ

Решение

Передать виджеты c вместо root в качестве первого параметра, и они будут размещены в нем:

widget=Label(c, text='whatever')

Затем, когда вы передадите виджет в менеджер геометрии, он будет в c,

Другие вопросы по тегам