Tkinter行添加器问题:获取Label的Y坐标并创建新输入行
解决Tkinter行添加器的坐标与组件重建问题
原代码的核心问题
- 组件销毁未执行:
response.destroy缺少括号,没有真正销毁输入框组件 - 已销毁组件复用错误:销毁Entry后直接调用
response.place会报错,因为组件实例已被销毁 - 坐标逻辑缺失:代码中未定义
y变量,且place方法返回None,无法通过word_location获取Label位置 - 未维护连续的坐标序列:没有记录当前行的Y坐标,无法实现每次向下偏移30的效果
修正后的代码
from tkinter import * current_y = 140 # 初始输入框Y坐标 def give(): global current_y # 创建并放置内容Label word = Label(window, text=response.get()) word.place(x=100, y=current_y) # 销毁旧输入框 response.destroy() # 更新坐标,创建新输入框 current_y += 30 global response response = Entry(window, width=10) response.place(x=100, y=current_y) window = Tk() window.geometry("900x900") window.configure(bg='lightgrey') Title = Label(window, text='SCHEDULE', font=(20)) Title.pack(side=TOP) Monday = Label(window, text='Monday', font=(10)).place(x=100,y=100) response = Entry(window, width=10) response.place(x=100, y=current_y) button = Button(window, text='Enter', height=1, command=give).place(x=170, y=140) window.mainloop()
关键修改说明
- 新增
current_y变量维护当前行的Y坐标,初始值设为输入框的起始位置140 - 每次点击按钮后,先将输入内容转为Label放在当前
current_y位置 - 销毁旧输入框后,将
current_y增加30,创建新的输入框并放置到新坐标 - 修复
destroy()的语法错误,确保组件被正确销毁 - 使用全局变量
response和current_y,保证函数内部能修改这些值
内容的提问来源于stack exchange,提问作者Samurai
相关产品推荐
相关产品推荐

