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

CustomTkinter框架布局异常:第三个框架超出窗口范围求助

解决CustomTkinter框架超出窗口范围的问题

问题分析

你创建的第三个框架(start_options_frame)超出窗口,核心原因是grid布局的列未设置权重分配,且框架仅靠左对齐,当窗口宽度不足以容纳两个250px的框架时,就会出现溢出。

修复方案

1. 为主窗口的列设置权重

在创建框架前,给self.cpanels_window_create的列0和列1添加权重,让两列自动分配窗口宽度:

self.cpanels_window_create.grid_columnconfigure(0, weight=1)
self.cpanels_window_create.grid_columnconfigure(1, weight=1)

2. 调整框架的sticky参数

将框架的sticky改为'nsew',让框架填充所在单元格空间,避免固定宽度导致溢出:

self.cpanel_options_frame.grid(row=3, column=0, sticky='nsew', padx=5, pady=5)
self.start_options_frame.grid(row=3, column=1, sticky='nsew', padx=5, pady=5)

3. 可选:让窗口自动适配内容

如果希望窗口自动调整大小容纳所有元素,可在布局完成后添加:

self.cpanels_window_create.update_idletasks()
self.cpanels_window_create.geometry(f"{self.cpanels_window_create.winfo_reqwidth()}x{self.cpanels_window_create.winfo_reqheight()}")

修改后的完整代码

def cpanel_options_frameandlabel(self):
    # 为主窗口的列设置权重,分配空间
    self.cpanels_window_create.grid_columnconfigure(0, weight=1)
    self.cpanels_window_create.grid_columnconfigure(1, weight=1)
    
    self.whm_options_frame = CTkFrame(
        master=self.cpanels_window_create,
        width=90,
        height=20,
        fg_color='#FF0033'
    )
    self.whm_options_frame.grid(
        row=2,
        column=0,
        padx=5,
        pady=5
    )
    
    self.cpanel_options_frame = CTkFrame(
        master=self.cpanels_window_create,
        width=250,
        height=250,
        corner_radius=1,
        border_width=0,
        fg_color='#FF0033'
    )
    self.cpanel_options_frame.grid(
        row=3,
        column=0,
        sticky='nsew',
        padx=5,
        pady=5
    )
    
    self.start_options_frame = CTkFrame(
        master=self.cpanels_window_create,
        width=250,
        height=250,
        border_width=0,
        corner_radius=1,
        fg_color='#FF0033'
    )
    self.start_options_frame.grid(
        row=3,
        column=1,
        sticky='nsew',
        padx=5,
        pady=5
    )
    
    # 可选:让窗口自动适配内容大小
    self.cpanels_window_create.update_idletasks()
    self.cpanels_window_create.geometry(f"{self.cpanels_window_create.winfo_reqwidth()}x{self.cpanels_window_create.winfo_reqheight()}")

额外说明

  • 添加padx和pady可让框架之间保留间距,避免拥挤。
  • 如果需要固定框架宽度,可给列设置minsize=250,确保列不会小于框架最小宽度:
    self.cpanels_window_create.grid_columnconfigure(0, weight=1, minsize=250)
    self.cpanels_window_create.grid_columnconfigure(1, weight=1, minsize=250)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 04:12:53