【发布时间】:2013-05-07 13:12:41
【问题描述】:
我正在寻找一种方法来让 Tkinter 帧在调整大小时表现得有点像这样:
from Tkinter import *
w = Tk()
w.aspect(1,1,1,1)
w.mainloop()
所以我想要这段代码:
import Tkinter as tk
from Tkconstants import *
r=tk.Tk()
content_frame=tk.Frame(r,borderwidth=5,relief=GROOVE)
content_frame.grid(row=0,column=0,sticky=(N,S,E,W))
tk.Label(content_frame,text='content').pack()
pad_frame=tk.Frame(r,borderwidth=5,relief=GROOVE)
pad_frame.grid(row=1,column=0,sticky=(N,S,E,W))
tk.Label(pad_frame,text='-pad-').pack()
r.rowconfigure(0, weight=1)
r.rowconfigure(1, weight=1)
r.columnconfigure(0, weight=1)
r.mainloop()
它基本上创建了 2 个框架,一个应该包含一些内容(在我的应用程序中,这个框架包含一个可以调整大小的 mathplotlib 图形),一个只是用于填充。
按照以下规则调整大小:
- 内容框架以固定的纵横比调整大小(假设它始终需要是方形的)
- pad 框架占用剩余的(垂直)空间
有什么想法吗?我已经阅读手册有一段时间了,似乎找不到合适的东西。
-丹尼尔
【问题讨论】:
-
你为什么不删除填充,只使用
aspect? -
这是我实际要做的简化案例。整个东西嵌入到更大的界面中,所以我不能使用windows/toplevel/...而且Frame没有.aspect()方法。
标签: python resize tkinter frame aspect-ratio