gpt4 book ai didi

python - 设置 tk.Frame 宽度和高度

转载 作者:太空宇宙 更新时间:2023-11-04 09:58:36 24 4
gpt4 key购买 nike

所以我正在创建一个 GUI,我正在努力使它能够使所有内容都适本地显示在屏幕上。我画了一个粗略的草图,说明我希望 GUI 的每个部分看起来像它的大小,所以我知道所有内容的粗略尺寸。

然而,我遇到的第一个问题是设置屏幕的左半部分。

所以左半部分由一个框架组成,我们称之为 MainFrame,它由 2 个框架组成,我们称之为 LabelFrameButtonFrame

  • MainFrame 需要 385 像素宽,460 像素高。
  • LabelFrame 宽度应为 375 像素,高度应为 115 像素。
  • ButtonFrame 需要 375 像素宽,330 像素高。

我的问题是我不知道如何为框架设置这些尺寸。

我已经尝试 self.config(width = num, height = num) 显然用适当的值替换了 num,但是那没有做任何事情。

我知道窗口本身有一个 .geometry 方法,但我没能找到 tk.Frame 的等效方法

最佳答案

使用 grid_propagate(0)pack_propagate(0),具体取决于所使用的几何管理器。 0 只是 False,它告诉 tkinter 关闭几何传播。

默认情况下,传播处于打开状态,并且容器增长/收缩到刚好足以容纳其内容。

我假设你想要的布局是这样的:

try:
import tkinter as tk
except ImportError:
import Tkinter as tk

root = tk.Tk()

MainFrame = tk.Frame(root, width=385, height=460, relief='raised', borderwidth=5)
LabelFrame = tk.Frame(MainFrame, width=375, height=115, relief='raised', borderwidth=5)
ButtonFrame = tk.Frame(MainFrame, width=375, height=330, relief='raised', borderwidth=5)

some_label = tk.Label(LabelFrame, text='Simple Text')
some_button = tk.Button(ButtonFrame, text='Quit', command=root.destroy)

for frame in [MainFrame, LabelFrame, ButtonFrame]:
frame.pack(expand=True, fill='both')
frame.pack_propagate(0)

for widget in [some_label, some_button]:
widget.pack(expand=True, fill='x', anchor='s')

root.mainloop()

grid仅在循环部分管理差异(注意 stickyrow/column configure):

...
for frame in [MainFrame, LabelFrame, ButtonFrame]:
# sticky='nswe' acts like fill='both'
frame.grid(sticky='nswe')
frame.rowconfigure(0, weight=1)
frame.columnconfigure(0, weight=1)
frame.grid_propagate(0)

for widget in [some_label, some_button]:
# sticky='wse' acts like fill='x' + anchor='s'
widget.grid(sticky='wse')

root.rowconfigure(0, weight=1)
root.columnconfigure(0, weight=1)
...

关于python - 设置 tk.Frame 宽度和高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44826267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com