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
相关产品推荐
相关产品推荐

