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

CustomTkinter中如何用.place()设置文本框长度及动态添加文本框

解决方案

1. 基于.place()调整文本框尺寸

用.place()布局时,无需依赖.pack()的ipadx/ipady参数,直接给CustomTkinter文本框(CTkEntry)设置width和height即可精准控制尺寸,完全不影响.place()的定位效果:

import customtkinter as ctk

root = ctk.CTk()
frame = ctk.CTkFrame(root, width=400, height=400)
frame.pack(padx=20, pady=20)

# 创建时直接指定尺寸+精准定位
entry1 = ctk.CTkEntry(frame, width=220, height=32)
entry1.place(x=60, y=50)

# 后续也可随时修改尺寸
entry1.configure(width=250, height=35)

如果需要文本框宽度随父容器自适应,可搭配relwidth参数(取值0-1,对应父容器宽度的百分比):

entry2 = ctk.CTkEntry(frame, height=30)
entry2.place(x=60, y=100, relwidth=0.65)  # 宽度占框架的65%,高度固定

2. 批量生成固定间距的文本框

维护一个变量记录下一个文本框的Y坐标,初始值设为第一个文本框的位置,每次点击按钮时,新文本框的Y坐标在上一个基础上加固定间距,之后更新这个变量即可:

import customtkinter as ctk

root = ctk.CTk()
root.title("批量添加输入框")
frame = ctk.CTkFrame(root, width=400, height=400)
frame.pack(padx=20, pady=20)

# 跟踪变量:起始Y坐标、输入框间距
current_y = 50
entry_gap = 40

def add_ingredient():
    global current_y
    # 创建新文本框并定位
    new_entry = ctk.CTkEntry(frame, width=220, height=32)
    new_entry.place(x=60, y=current_y)
    # 更新下一个输入框的Y坐标
    current_y += entry_gap

# 初始化第一个输入框
first_entry = ctk.CTkEntry(frame, width=220, height=32)
first_entry.place(x=60, y=current_y)
current_y += entry_gap

# 添加按钮
add_btn = ctk.CTkButton(frame, text="添加食材", command=add_ingredient)
add_btn.place(x=60, y=current_y + 15)

root.mainloop()

每次点击按钮,新文本框都会自动在之前的输入框下方固定间距处生成,同时保持X坐标的精准定位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 07:34:58