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

CustomTkinter新手求助:grid循环放置Frame时第二列最后一个缺失

问题解决:CustomTkinter循环grid放置Frame时第二列最后一个缺失

问题原因

你遇到的问题主要有两个可能:

  1. 布局逻辑误解:你的代码是按列排列Frame(每列5个),如果你的预期是日历常用的行排列(每行7个),会导致对“第二列”的显示预期错误。
  2. grid布局未配置扩展:原代码固定了Frame的宽高,但没有设置单元格的自动扩展规则,窗口空间不足时部分Frame会被截断或隐藏。

修复方案

方案1:改为日历常用的行排列(推荐)

如果目标是实现日历布局(每行7天),调整循环中的行列判断逻辑:

import customtkinter as ctk

WIDTH, HEIGHT = 1000, 600
ctk.set_appearance_mode("dark")
ctk.set_default_color_theme("green")
win = ctk.CTk()
win.geometry(f"{WIDTH}x{HEIGHT}")
win.title("日历")

frame = ctk.CTkFrame(win)
frame.pack(expand=True, fill="both", padx=5, pady=5)

# 配置单元格自动扩展,让Frame自适应窗口大小
for col in range(7):
    frame.columnconfigure(col, weight=1)
for row in range(5):
    frame.rowconfigure(row, weight=1)

frames = []
for day in range(31):
    frames.append(ctk.CTkFrame(frame, corner_radius=5))

rowx, columny = 0, 0
for f in frames:
    # 设置sticky让Frame填充整个单元格
    f.grid(row=rowx, column=columny, padx=1, pady=1, sticky="nsew")
    # 每行7个,列数到6时换行
    if columny == 6:
        columny = 0
        rowx += 1
    else:
        columny += 1

win.mainloop()

方案2:保留列排列逻辑,修复显示问题

如果确实需要按列排列(每列5个),添加单元格扩展配置:

import customtkinter as ctk

WIDTH, HEIGHT = 1000, 600
ctk.set_appearance_mode("dark")
ctk.set_default_color_theme("green")
win = ctk.CTk()
win.geometry(f"{WIDTH}x{HEIGHT}")
win.title("按列排列")

frame = ctk.CTkFrame(win)
frame.pack(expand=True, fill="both", padx=5, pady=5)

# 配置7列和5行的单元格自动扩展
for col in range(7):
    frame.columnconfigure(col, weight=1)
for row in range(5):
    frame.rowconfigure(row, weight=1)

frames = []
for day in range(31):
    frames.append(ctk.CTkFrame(frame, corner_radius=5))

rowx, columny = 0, 0
for f in frames:
    f.grid(row=rowx, column=columny, padx=1, pady=1, sticky="nsew")
    if rowx == 4:
        rowx = 0
        columny += 1
    else:
        rowx += 1

win.mainloop()

关键修改点

  • 移除Frame的固定宽高,改为让单元格控制大小。
  • 添加columnconfigure和rowconfigure配置,设置weight=1让单元格随窗口自动扩展。
  • 给grid添加sticky="nsew",让Frame填充整个单元格。

内容的提问来源于stack exchange,提问作者Christopher Munoz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 14:30:04