Как разместить виджеты на холсте?
Я создаю проект для своей школы с использованием 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
,