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

Grid布局下左侧框架小于右侧的原因及等宽实现方案

解决Grid布局中左右框架宽度不一致的问题

你的问题出在Grid列的宽度分配逻辑上:虽然你给窗口的第0、1列都设置了weight=1,但当列内控件的内容宽度存在差异时,Grid会优先根据内容撑开列宽,导致左右框架宽度不等。

要让左右框架宽度严格一致,只需给这两列添加**uniform参数**,将它们归入同一个均匀分组,强制两列保持相同的宽度比例:

import customtkinter as ctk

class SettingsWindow(ctk.CTk):
    def __init__(self):
        super().__init__()

        self.title('Einstellungen')
        self.geometry('1000x750+10+10')
        self.grid_rowconfigure(0, weight=1)
        self.grid_rowconfigure(1, weight=1)
        # 关键修改:添加uniform参数,让两列属于同一分组
        self.grid_columnconfigure(0, weight=1, uniform="same_col")
        self.grid_columnconfigure(1, weight=1, uniform="same_col")

        self.frame_settings = ctk.CTkFrame(self, border_width=1, border_color='black')
        self.frame_settings.grid(row=0, column=0, sticky='nesw', padx=(5, 5), pady=(5, 5))
        self.frame_settings.grid_columnconfigure(0, weight=1)

        self.label_settings = ctk.CTkLabel(self.frame_settings, bg_color='lightgrey', text='Einstellungen')
        self.label_settings.grid(row=0, column=0, columnspan=2, padx=(5, 5), pady=(5, 5))

        self.frame_database_settings = ctk.CTkFrame(self, border_width=1, border_color='black')
        self.frame_database_settings.grid(row=0, column=1, sticky='nesw', padx=(5, 5), pady=(5, 5))
        self.frame_database_settings.grid_columnconfigure(0, weight=1)

        self.label_database_settings = ctk.CTkLabel(self.frame_database_settings, bg_color='lightgrey',
                                                    text='Datenbank-Einstellungen')
        self.label_database_settings.grid(row=0, column=0, columnspan=2, padx=(5, 5), pady=(5, 5))

        self.frame_rules = ctk.CTkFrame(self, border_width=1, border_color='black')
        self.frame_rules.grid(row=1, column=0, columnspan=2, sticky='nesw', padx=(5, 5), pady=(5, 5))
        self.frame_rules.grid_columnconfigure(0, weight=1)

        self.label_rules = ctk.CTkLabel(self.frame_rules, text='Regeln')
        self.label_rules.grid(row=0, column=0, columnspan=2, pady=(5, 5))

SettingsWindow().mainloop()

原理说明

uniform参数接受一个字符串作为分组标识,所有带有相同标识的列(或行)会强制按照weight的比例分配空间,且各自的最小/最大尺寸会同步,彻底避免内容差异导致的宽度不一致问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:50:16