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

如何在CustomTkinter中调整网格列宽度以缩减控件占用空间?

解决CustomTkinter输入框与按钮列过宽的问题

CustomTkinter的控件自带默认最小尺寸,单纯调整列的weight或minsize不会生效,得从控件本身和布局参数入手:

  • 直接指定控件宽度:给输入框和按钮设置width参数,强制缩小控件本身的宽度,避免它占用多余空间。
  • 减少列间距:通过grid的padx参数缩小列之间的空隙,防止列被间距撑开。
  • 限制容器扩展:给承载控件的Frame设置合适的pack参数,避免容器自动拉伸导致列宽变大。

修改后的代码示例:

import customtkinter as ctk

# Create a tkinter window
window = ctk.CTk()

# Create a frame for options - 限制frame不自动扩展
opts_frame = ctk.CTkFrame(window)
opts_frame.pack(fill="x", expand=False, padx=10, pady=10)

# Define variables
blank_window = ctk.IntVar()
smoothing = ctk.DoubleVar()
iterations = ctk.IntVar()
bootstraps = ctk.IntVar()
blank_window.set(0)
smoothing.set(0.1)
iterations.set(3)
bootstraps.set(100)

# Create labels
ctk.CTkLabel(opts_frame, text='Window Size:').grid(row=0, column=0, sticky='w', padx=(0, 5))
ctk.CTkLabel(opts_frame, text='Smoothing:').grid(row=1, column=0, sticky='w', padx=(0, 5))
ctk.CTkLabel(opts_frame, text='Iterations:').grid(row=2, column=0, sticky='w', padx=(0, 5))
ctk.CTkLabel(opts_frame, text='Bootstraps:').grid(row=3, column=0, sticky='w', padx=(0, 5))

# Create entry fields - 指定输入框宽度
window_entry = ctk.CTkEntry(opts_frame, textvariable=blank_window, width=60)
smooth_entry = ctk.CTkEntry(opts_frame, textvariable=smoothing, width=60)
iter_entry = ctk.CTkEntry(opts_frame, textvariable=iterations, width=60)
boot_entry = ctk.CTkEntry(opts_frame, textvariable=bootstraps, width=60)
window_entry.grid(row=0, column=1, padx=(0, 5))
smooth_entry.grid(row=1, column=1, padx=(0, 5))
iter_entry.grid(row=2, column=1, padx=(0, 5))
boot_entry.grid(row=3, column=1, padx=(0, 5))

# Create increase and decrease functions
def increase_window():
    blank_window.set(blank_window.get() + 1)

def decrease_window():
    blank_window.set(blank_window.get() - 1)

# Create buttons - 指定按钮宽度
inc_button = ctk.CTkButton(opts_frame, text="+", command=increase_window, width=30)
dec_button = ctk.CTkButton(opts_frame, text="-", command=decrease_window, width=30)
inc_button.grid(row=0, column=2, padx=(0, 2))
dec_button.grid(row=0, column=3)

# Start the ctkinter event loop
window.mainloop()

关键改动说明:

  • 给所有CTkEntry添加width=60,压缩输入框宽度;
  • 给CTkButton添加width=30,缩小按钮尺寸;
  • 在grid布局中添加padx参数,减少控件和列之间的空隙;
  • 给opts_frame的pack设置fill="x", expand=False,限制Frame不会无限制拉伸。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 21:20:07