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

如何在CustomTkinter中调整按钮及按钮框架的尺寸?

解决CustomTkinter按钮与框架尺寸设置无效的问题

核心原因

你给按钮设置了pack(expand=True),这个参数会强制组件自动填充父容器的可用空间,直接覆盖手动设置的width和height参数。另外按钮框架的默认pack逻辑会随内部内容或窗口大小变化,导致框架尺寸设置失效。

具体修复步骤

1. 调整按钮的pack参数,取消自动扩展

移除按钮pack方法中的expand=True,改为expand=False,之后就能正常给按钮设置固定尺寸:

# 修改第一个按钮的pack语句
install_button1.pack(side="left", pady=40, padx=15, expand=False)
# 修改第二个按钮的pack语句
install_button2.pack(side="left", pady=40, padx=15, expand=False)

然后在创建按钮时添加width和height参数:

install_button1 = ctk.CTkButton(button_frame, text="Installazione rapida",
                                bg_color="transparent", fg_color="transparent", border_width=1, corner_radius=0,
                                border_color="#9C92AD", text_color=("#F8F8F8", "gray90"), hover_color=("#9C92AD", "gray70"), 
                                command=install_addon_wrapper,
                                width=200, height=50)  # 自定义按钮尺寸

2. 固定按钮框架的尺寸

给按钮框架设置width和height,同时调整pack参数避免框架被拉伸,再通过pack_propagate(False)禁止框架随内部内容改变大小:

button_frame = ctk.CTkFrame(root, corner_radius=0, width=600, height=120)  # 设置框架固定尺寸
button_frame.pack(pady=80, fill=None, expand=False)  # 取消自动填充扩展
button_frame.configure(fg_color="transparent")
button_frame.pack_propagate(False)  # 锁定框架尺寸,不受内部组件影响

3. 完整修改后的代码示例

import customtkinter as ctk

# 假设以下函数已定义
def install_addon_wrapper():
    pass

def install_drivers():
    pass

# Creazione della finestra principale
root = ctk.CTk()
root.title("CCE_tool")
root.configure(fg_color="#282035")
root.geometry("900x550")
root.resizable(True, True)

# Utilizza ctk.CTkLabel invece di ctk.CTkLabel per creare l'etichetta
program_name = ctk.CTkLabel(root, text="C.C.E. Tool", font=('Avantstile Regular', 80),
                            fg_color="transparent", text_color=("#FF79C6")) 
program_name.pack(pady=40)

# Creazione di un frame per contenere i bottoni
button_frame = ctk.CTkFrame(root, corner_radius=0, width=600, height=120)
button_frame.pack(pady=80, fill=None, expand=False)
button_frame.configure(fg_color="transparent")
button_frame.pack_propagate(False)

# Creazione del primo CustomButton
install_button1 = root.main_button_1 = ctk.CTkButton(button_frame, text="Installazione rapida",
                                                      bg_color="transparent", fg_color="transparent", border_width=1, corner_radius=0,
                                                      border_color="#9C92AD", text_color=("#F8F8F8", "gray90"), hover_color=("#9C92AD", "gray70"), 
                                                      command=install_addon_wrapper,
                                                      width=200, height=50)
install_button1.pack(side="left", pady=40, padx=15, expand=False)

# Creazione del secondo CustomButton
install_button2 = ctk.CTkButton(button_frame, text="Installazione singoli componenti",
                                bg_color="transparent", fg_color="transparent", border_width=1, corner_radius=0,
                                border_color="#9C92AD", text_color=("#F8F8F8", "gray90"), hover_color=("#9C92AD", "gray70"),
                                command=install_drivers,
                                width=250, height=50)
install_button2.pack(side="left", pady=40, padx=15, expand=False)

root.mainloop()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 23:22:39