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

Tkinter循环添加y+30位置输入项及防重复点击问题求助

Tkinter输入框动态添加及按钮防重复点击解决方案

修改后的完整代码

import tkinter as tk

root = tk.Tk()
root.geometry("400x600")

# 跟踪下一个输入框的y坐标,初始值设为135
current_y = 135
# 存储当前输入框对象,用于绑定回车事件
current_entry = None

def add_withxvariable():
    global current_y, current_entry, monday_btn
    # 点击后立即禁用按钮,防止重复点击
    monday_btn.config(state=tk.DISABLED)
    
    # 创建新的输入框,用current_y控制位置
    subject = tk.Entry(root, width=20)
    subject.place(x=50, y=current_y)
    current_entry = subject
    
    # 给输入框绑定回车事件,回车后解锁按钮
    subject.bind("<Return>", on_enter_pressed)
    
    # 更新下一个输入框的y坐标
    current_y += 30

def on_enter_pressed(event):
    global monday_btn
    # 重新启用按钮,允许添加下一项
    monday_btn.config(state=tk.NORMAL)
    # 可选:把焦点移到按钮上,方便操作
    monday_btn.focus_set()

# 创建Monday按钮
monday_btn = tk.Button(root, text="Monday", command=add_withxvariable)
monday_btn.place(x=50, y=100)

root.mainloop()

关键修改说明

解决输入框循环排列问题

  • 用全局变量current_y跟踪下一个输入框的位置,初始值设为你需要的135,每次创建输入框后直接让current_y += 30,这样每一个新输入框都会自动排在前一个下方30像素的位置。
  • 放弃用subject.winfo_y()取坐标的方式,因为第一次创建输入框前这个值不存在,而且直接维护全局变量的坐标值更稳定可靠。

解决按钮重复点击问题

  • 点击Monday按钮后,立刻调用monday_btn.config(state=tk.DISABLED)把按钮设为禁用状态,用户没法再次点击。
  • 给每个新生成的输入框绑定回车事件<Return>,用户按下回车后触发on_enter_pressed函数,在这个函数里重新把按钮设为启用状态(tk.NORMAL),此时才能添加下一个输入项。

内容的提问来源于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 08:52:21