在Tkinter中调整一个小部件在另一个小部件内的大小
我正在开发一个用于莫斯堡光谱的模拟软件(化学方面的),但是在设计用户界面时,遇到了一个问题,就是在调整父窗口的大小时,子窗口的大小没有跟着变化。父窗口在窗口最大化时会填满额外的空间,但子窗口的大小却不变。
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
的大小却保持不变。
1 个回答
2
你没有给框架里面的小部件设置 sticky
选项,这样就导致这些小部件不能填满它们被分配的区域。此外,你也没有给内部框架的行和列设置权重。
每次使用网格布局时,都应该为父部件的行和列指定权重。如果你在框架里面再放框架,每个框架都是独立的,需要分别配置它们的行和列。