在 Tkinter 的另一个小部件中调整一个小部件的大小

2022-01-18 00:00:00 python tkinter widget

问题描述

我正在为穆斯堡尔光谱(化学)开发一个模拟软件,但是在设计 UI 时,我在使用父小部件调整子小部件的大小时遇到​​了问题.当窗口最大化时,父框架会填充额外的空间,但子窗口小部件不会改变其大小.

I am developing a simulation software for Mössbauer spectroscopy (Chemistry) but while designing the UI, I am facing problem while resizing the children widget with parent widget. The parent frame fills the extra space when window is maximized but the children widget doesn't changes its size.

from Tkinter import *
import ttk
import tkFileDialog as FileDialog
from PIL import Image, ImageTk
import tkFont
import matplotlib
from numpy import sin, pi

root = Tk()
# Main Container
content = ttk.Frame(root)
bold = tkFont.Font(family='Helvetica', weight='bold')
LeftFrame = ttk.Frame(content, borderwidth=5, relief="groove", width=200)
RightFrame = ttk.Frame(content, borderwidth=5, relief="groove", width=750)
text = Text(LeftFrame, height=40, width=30, padx=5, pady=5)

..... Some Codes .....

# Geometry
LeftFrame.grid(column=0, row=1, rowspan=2, sticky=(N, S, E, W))
RightFrame.grid(column=1, row=1, columnspan=3, rowspan=2, sticky=(N, S, E, W))
namelbl.grid(column=0, row=1, sticky=(N, S, E, W), padx=5)
text.grid(column=0, row=2, sticky=(N, S, E, W))

root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
content.columnconfigure(0, weight=1)
content.columnconfigure(1, weight=3)
content.columnconfigure(2, weight=3)
content.columnconfigure(3, weight=3)
content.rowconfigure(1, weight=1)

root.state("zoomed")

root.mainloop()

所以,我的问题是如何以相同的速率更改 text 小部件(子级)和 LeftFrame(父级)的大小.在我的情况下,只有 LeftFrame 正在扩展,而 text 是恒定的.

So, my question is How do I change the size of text widget (children) with LeftFrame (parent) in the same rate. In my case only LeftFrame is expanding while text is constant.


解决方案

您没有为框架内的小部件提供 sticky 选项,这会阻止小部件填充它们所在的区域给定的.此外,您没有给出内部框架行和列的权重.

You aren't giving the sticky option to the widgets inside the frame, which prevents the widgets from filling the area they have been given. Also, you aren't giving the inner frame rows and columns weights.

任何时候使用网格,都应该为父窗口小部件的行和列指定权重.如果您在框架内有框架,则每个框架都是独立的,并且需要适当配置其行和列.

Any time you use grid, you should be specifying weights for the rows and columns of the parent widgets. If you have frames inside of frames, each frame is independent and needs its rows and columns configured appropriately.

相关文章