Python 3.x Can';t使用Tkinter在第二个窗口上放置按钮

Python 3.x Can';t使用Tkinter在第二个窗口上放置按钮,python-3.x,tkinter,Python 3.x,Tkinter,我不知道为什么当我放置了3个按钮来显示时,窗口会被创建为一无所有。这是它发生的函数: def Click(): if input_fieldContra.get() == contraseña: vent_iniciada = Tk() root.withdraw() vent_iniciada.geometry("250x200") vent_iniciada.mainloop() nuevoB = Button(vent_iniciada, text="Nuevo", comman

我不知道为什么当我放置了3个按钮来显示时,窗口会被创建为一无所有。这是它发生的函数:

def Click():
if input_fieldContra.get() == contraseña:
 vent_iniciada = Tk()
 root.withdraw()
 vent_iniciada.geometry("250x200")
 vent_iniciada.mainloop()
 nuevoB = Button(vent_iniciada, text="Nuevo", command=NuevoBot)
 abrirB = Button(vent_iniciada, text="Abrir", command=AbrirBot)
 guardarB = Button(vent_iniciada, text="Guardar", command=GuardarBot)

 nuevoB.grid(vent_iniciada, row=0, column=0)
 abrirB.grid(vent_iniciada, row=2, column=0)
 guardarB.grid(vent_iniciada, row=3, column=0)
首先,
.grid()
不会出现在父窗口上。当使用网格时,您应该在创建小部件时在小部件内定义父窗口。
.grid()
选项必须为-column、-columnspan、-in、-ipadx、sticky等

其次,如果将
vent_iniciada.mainloop()
移动到代码底部,它应该可以工作。发生的情况是代码正在执行:

vent\u iniciada=TK()

root.draw

vent_iniciada.几何结构(“250x200”)

这是你应该把你的按钮放在这里,这样代码就能把它们读入窗口

最后,在网格化小部件之后,您告诉程序mainloop所有内容

vent\u iniciada.mainloop()

首先,
.grid()
不会出现在父窗口上。当使用网格时,您应该在创建小部件时在小部件内定义父窗口。
.grid()
选项必须为-column、-columnspan、-in、-ipadx、sticky等

其次,如果将
vent_iniciada.mainloop()
移动到代码底部,它应该可以工作。发生的情况是代码正在执行:

vent\u iniciada=TK()

root.draw

vent_iniciada.几何结构(“250x200”)

这是你应该把你的按钮放在这里,这样代码就能把它们读入窗口

最后,在网格化小部件之后,您告诉程序mainloop所有内容

vent\u iniciada.mainloop()
您必须移动:

vent_iniciada.mainloop() 
到函数的最后一行,您必须移动:

vent_iniciada.mainloop() 
到函数的最后一行,应避免使用
Tk()
的多个实例。将
vent\u-iniciada
更改为
Toplevel()
并删除
vent\u-iniciada.mainloop()
。应避免使用
Tk()
的多个实例。将
vent\u-iniciada
更改为
Toplevel()
并删除
vent\u-iniciada.mainloop()