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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 13:50:03