You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tkinter布局pack方法中fill、side、expand参数交互逻辑疑问

import tkinter as tk

window = tk.Tk()

frame1 = tk.Frame(master=None, width=200, height=100, bg="red")
frame1.pack(fill=tk.BOTH, side=tk.TOP, expand=False)

frame2 = tk.Frame(master=None, width=100, height=50, bg="yellow")
frame2.pack(fill=tk.BOTH, side=tk.TOP, expand=False)

frame3 = tk.Frame(master=None, width=50, height=25, bg="blue")
frame3.pack(fill=tk.BOTH, side=tk.TOP, expand=False)

window.mainloop()
fill与side的交互

设置fill=tk.BOTH时,拖动窗口向下,组件仅水平填充(可通过窗口灰色背景看出),并未如预期实现垂直填充。

将所有Frame的side参数从tk.TOP改为tk.LEFT后,组件仅垂直填充,无法水平填充。

基于这两个实验,是否side参数会改变fill=tk.BOTH的行为,使其每次仅在单一方向生效?

后续测试:设置side=tk.LEFT时,将fill参数从tk.BOTH改为tk.Y,效果与tk.BOTH一致;改为tk.X时,组件既不水平填充也不垂直填充(符合预期)。

fill与expand的交互

若将所有Frame的expand设为True,无论side是tk.TOP还是tk.LEFT,之前未生效的填充方向现在都能实现双向填充。

有两个疑问:

  • 是expand=True让fill=tk.BOTH正常工作了?
  • 还是fill=tk.BOTH仍未生效,由expand补全了失效方向的填充?

若是后者,tk.BOTH的存在意义是什么?因为它总会因side参数在某一方向失效,还需依赖expand=True补全?

内容的提问来源于stack exchange,提问作者Han Qi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 22:28:09