如何将小部件放置在 canvas 中?

How do I place the widgets in the canvas?

我正在使用 tkinter 为我的学校创建一个专注于牙科诊所的项目。我在此处发布的代码会打开一个 window,要求患者登录或注册。除 canvas 部分外,该功能正常工作。函数执行时;标签、文本字段和按钮移出了我放在根 window 中的 canvas,如输出屏幕截图所示。我应该做哪些更改才能使标签、文本字段和按钮在 canvas 中而不是在其中?

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)

The output after the function is executed

传递小部件 c 而不是 root 作为第一个参数,它们将被放置在其中:

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

然后,当您将小部件传递给几何管理器时,它将位于 c