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

如何使用customtkinter的grid()方法使框架Y轴不居中

解决CustomTkinter中grid()定位Y轴位置无效的问题

你当前的代码里,optFrame默认会紧贴所在grid单元格的顶部,所以无法到达目标Y轴位置。结合你窗口固定尺寸的情况,有两种简单的解决方式:

方法一:直接设置垂直边距(适合固定窗口尺寸)

计算目标垂直偏移量,在grid()中添加pady参数:
窗口高度750,框架高度100,垂直居中的偏移量为 (750-100)//2 = 325,修改后的代码如下:

import customtkinter as ctk

# 主题设置
ctk.set_default_color_theme("minimalistTheme.json")

# 主窗口
timedoro = ctk.CTk()
timedoro.geometry("1500x750")
timedoro.title("Time-Doro!")
timedoro.iconbitmap("tdicon.ico")
timedoro.resizable(False, False)

# 选项框架
optFrame = ctk.CTkFrame(timedoro, width=100, height=100, corner_radius=6)
# 添加pady参数设置垂直偏移,让框架垂直居中
optFrame.grid(row=0, column=1, padx=25, pady=325)

# 主循环
timedoro.mainloop()

方法二:通过grid行配置实现灵活对齐(适合窗口可调整的情况)

先让grid的行占据整个窗口垂直空间,再控制框架在单元格内的对齐方式,同时禁止框架自动调整尺寸:

import customtkinter as ctk

# 主题设置
ctk.set_default_color_theme("minimalistTheme.json")

# 主窗口
timedoro = ctk.CTk()
timedoro.geometry("1500x750")
timedoro.title("Time-Doro!")
timedoro.iconbitmap("tdicon.ico")
timedoro.resizable(False, False)

# 配置第0行占据全部垂直空间
timedoro.grid_rowconfigure(0, weight=1)

# 选项框架,禁止自动调整尺寸
optFrame = ctk.CTkFrame(timedoro, width=100, height=100, corner_radius=6)
optFrame.grid_propagate(False)

# 让框架在单元格内垂直居中(通过上下边距自动填充)
optFrame.grid(row=0, column=1, padx=25, sticky="")

# 主循环
timedoro.mainloop()

关键说明

  • grid_propagate(False):禁止框架根据内部组件自动调整尺寸,保证你设置的width和height生效。
  • grid_rowconfigure(0, weight=1):让第0行的垂直空间随窗口大小拉伸,确保单元格高度覆盖整个窗口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 00:06:15