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

降低显示器分辨率导致Tkinter窗口右侧控件被截断

解决CustomTkinter仪表盘在低分辨率下控件被截断的问题

问题根源

你的代码存在两个核心问题导致低分辨率下控件被截断:

  1. 未给仪表盘窗口的网格列配置权重,窗口缩放时列不会自动分配可用空间;
  2. 使用固定宽度的空白列和固定尺寸的控件,总宽度超出低分辨率窗口的显示范围。

修复步骤

1. 给窗口列设置自适应权重

在创建dash_tk2后,给所有用到的列添加权重配置,让列随窗口宽度自动调整:

dash_tk2 = customtkinter.CTkToplevel(root_tk)
dash_tk2.state("zoomed")
dash_tk2.title("Dashboard")
dash_tk2.configure(bg='#302E2E')

# 配置所有列的权重,实现宽度自适应
for col in range(6):
    dash_tk2.columnconfigure(col, weight=1)

2. 替换固定宽度空白列,改用间距参数

删除所有blank_col1到blank_col6的创建代码,直接在grid布局时用padx设置控件间距,避免固定宽度占用空间:

# 原空白列布局替换为padx参数
frame_dash1.grid(row=1, column=0, sticky='ns', rowspan=2, padx=(10, 5))
frame_dash2.grid(row=1, column=1, sticky='n', rowspan=2, padx=5)
frame_dash3.grid(row=1, column=2, sticky='n', rowspan=2, padx=5)
frame_dash4.grid(row=1, column=3, sticky='n', rowspan=2, padx=5)
frame_dash5.grid(row=1, column=4, sticky='n', rowspan=2, padx=5)
frame_dash6.grid(row=1, column=5, sticky='n', padx=(5, 10))

3. 移除控件的固定宽度限制

删除标签(如lab_massflow2a、lab_dashhead6a)的width参数,让控件根据内容自适应,或用sticky='ew'让控件填充所在列空间:

# 示例:修改流量数值标签
lab_massflow2a = Label(frame_dash2a, text="19,999.999", anchor=CENTER, font='Tahoma 25 bold', fg="black", bg='#FBBDBE')
lab_massflow2a.grid(row=0, column=0, pady=20, sticky='ew')
# 给子框架列设置权重,让标签填充宽度
frame_dash2a.columnconfigure(0, weight=1)

4. 可选:添加滚动容器

如果调整后内容仍超出窗口,用CTkScrollableFrame包裹所有仪表盘内容,支持滚动查看:

# 创建滚动容器
scroll_frame = customtkinter.CTkScrollableFrame(master=dash_tk2, fg_color='#302E2E')
scroll_frame.pack(fill="both", expand=True, padx=10, pady=10)

# 将所有frame_dash1~frame_dash6的master改为scroll_frame
frame_dash1 = customtkinter.CTkFrame(master=scroll_frame, corner_radius=15, fg_color="white")
# 其他frame同理修改master参数

内容的提问来源于stack exchange,提问作者Muhammad Farzan Bashir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 16:36:07