如何在python tkinter中设置固定的帧大小

时间:2017-02-19 21:55:13

标签: python tkinter window size fixed

说我有一个带有两个独立框架的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是在启动时激活的先前帧

1 个答案:

答案 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