说我有一个带有两个独立框架的tkinter窗口,我想填充信息,我唯一的问题是框架大小自动设置。我的窗户尺寸是500乘500,我希望顶部框架从0,0到250,250。底部从0,250到500,500。我想你可能会在这一点上得到这个想法
到目前为止,这是我的代码:
def main_game(username,password,new_u,old_u):
Tk_window_center(500,500)
root.resizable(width=False, height=False)
##
if new_u =="":
pass
else:
new_u.pack_forget()
if old_u =="":
pass
else:
old_u.pack_forget()
##
output_window_frame=Frame(root, bg="black")
user_terminal_frame=Frame(root)
##
usr_output=Label(output_window_frame)
user_inp=Entry(user_terminal_frame)
user_term=Label(user_terminal_frame)
##
output_window_frame.grid(row=0,column=0,rowspan=3,columnspan=3, sticky="NSEW")
user_terminal_frame.grid(row=4,column=0,rowspan=3,columnspan=3, sticky="NSEW")
user_inp.pack(side="top", fill="x")
user_term.pack(side="bottom", fill="x")
P.S。 new_u和old_u是在启动时激活的先前帧
答案 0 :(得分:0)
由于您正在使用grid
,因此您需要为每一行提供相同的非零权重,以便每行扩展以填充其父级的一半。你在第4行放了一个窗口,这是好的,但由于你在窗口中只有两个项目,这是误导,所以我建议使用第0行和第1行。
root.grid_rowconfigure(0, weight=1)
root.grid_rowconfigure(4, weight=1)
output_window_frame.grid(row=0,column=0,rowspan=3,columnspan=3, sticky="NSEW")
user_terminal_frame.grid(row=1,column=0,rowspan=3,columnspan=3, sticky="NSEW")
当然,如果你把其他东西放在第1,2或3行,那么你的帧每个都不会高250像素。
还有其他方法可以完成同样的事情。您可以使用pack
,并将包选项fill
设置为"both"
,将expand
设置为True
。或者,您可以使用位置并将顶部窗口放在0,0的x / y坐标上,相对宽度为1.0,相对高度为.5,然后将另一个放在250,250,相对宽度为1.0,相对高度为.5