我正在为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
是不变的。
答案 0 :(得分:2)
您没有为框架内的小部件提供sticky
选项,这可以防止小部件填充已经给出的区域。此外,您没有给出内框行和列权重。
每次使用网格时,都应该为父窗口小部件的行和列指定权重。如果框架内有框架,则每个框架都是独立的,需要适当配置其行和列。