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

时间:2014-07-10 18:00:09

标签: python tkinter widget

我正在为Mössbauer光谱学(化学)开发一个模拟软件,但在设计UI时,我在使用父窗口小部件调整子窗口小部件时面临问题。当窗口最大化时,父框架会填充额外的空间,但子窗口小部件不会改变其大小。

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是不变的。

Software Screenshot

1 个答案:

答案 0 :(得分:2)

您没有为框架内的小部件提供sticky选项,这可以防止小部件填充已经给出的区域。此外,您没有给出内框行和列权重。

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