ttk Frame填充异常:上下分栏布局需求实现求助
解决方案
修改后的代码如下:
import tkinter as tk from tkinter import ttk tk_root = tk.Tk() tk_root.geometry('500x500') frame_1 = ttk.Frame(tk_root, padding=10, borderwidth=3, relief=tk.GROOVE) frame_2 = ttk.Frame(tk_root, padding=10, borderwidth=3, relief=tk.GROOVE) frame_3 = ttk.Frame(tk_root, padding=10, borderwidth=3, relief=tk.GROOVE, height=50) frame_4 = ttk.Frame(tk_root, padding=10, borderwidth=3, relief=tk.GROOVE, height=50) # 前两个Frame填充上方所有可用空间,横竖双向扩展 frame_1.pack(fill=tk.BOTH, expand=True) frame_2.pack(fill=tk.BOTH, expand=True) # 后两个Frame仅横向填充,高度固定,不抢占额外空间 frame_3.pack(fill=tk.X, expand=False) frame_4.pack(fill=tk.X, expand=False) tk_root.mainloop()
关键修改说明
- 针对Frame3、Frame4:移除
expand=True,设置expand=False。原代码中expand=True会让这两个Frame抢占额外可用空间,导致高度无法固定且出现上下空白;修改后fill=tk.X保证横向填充窗口宽度,height=50的设置会完全生效。 - 针对Frame1、Frame2:保留
fill=tk.BOTH, expand=True,二者会自动平分Frame3、Frame4上方的所有剩余空间,实现横竖双向填充的需求。
内容的提问来源于stack exchange,提问作者SevenChords
相关产品推荐
相关产品推荐

