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

问题描述 投票:0回答:1

假设我有一个 tkinter 窗口,其中有两个独立的框架,我想填充信息,我唯一的问题是框架大小动态设置自身。我的窗口大小是 500 x 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") 

附注new_u 和 old_u 是在启动时激活的先前帧

python tkinter window size fixed
1个回答
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
。或者,您可以使用 place 并将顶部窗口放置在 x/y 坐标 0,0 处,相对宽度为 1.0,相对高度为 0.5,然后将另一个窗口再次放置在 250,250 处,相对宽度为 1.0,相对高度 0.5

© www.soinside.com 2019 - 2024. All rights reserved.