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

Tkinter开发:如何在同一事件回调中区分两个输入框组件?

区分Tkinter输入框点击事件的方法

核心解决思路

Tkinter的事件处理函数会自动接收一个event参数,该参数的widget属性就是触发事件的控件本身——通过它就能直接区分是哪个输入框被操作了。

1. 修改点击事件处理函数

原来的handleEvent只能固定清空self.text,现在改成通过event.widget获取触发事件的输入框,再找到它绑定的StringVar来清空:

def handleEvent(self, event):
    # 获取触发点击的输入框控件
    target_entry = event.widget
    # 获取该输入框绑定的文本变量
    var = target_entry.cget("textvariable")
    # 清空提示文字
    var.set("")

2. 修改回车事件处理函数(同理区分输入框)

原来的handleEvent2只能获取第一个输入框的内容,现在用event.widget获取当前触发回车的输入框:

def handleEvent2(self, event):
    target_entry = event.widget
    content = target_entry.get()
    print(content)

3. 完整修改后的代码

import tkinter as tk
from tkinter import ttk

class window():
    def handleEvent(self, event):
        target_entry = event.widget
        var = target_entry.cget("textvariable")
        var.set("")
    
    def handleEvent2(self, event):
        target_entry = event.widget
        content = target_entry.get()
        print(content)
    
    def page0(self):
        self.text = tk.StringVar(None)
        self.text.set("Enter text here")
        self.efeld = ttk.Entry(fenster, textvariable=self.text)
        self.efeld.place(x=5, y=20)
        self.efeld.bind("<Button-1>", self.handleEvent)
        self.efeld.bind("<Return>", self.handleEvent2)
        
        self.text2 = tk.StringVar(None)
        self.text2.set("Enter text 2 here")
        self.efeld2 = ttk.Entry(fenster, textvariable=self.text2)
        self.efeld2.place(x=5, y=50)
        self.efeld2.bind("<Button-1>", self.handleEvent)
        self.efeld2.bind("<Return>", self.handleEvent2)

fenster = tk.Tk()
fenster.title("Test")
fenster.geometry("500x350")
fenster.resizable(False, False)
window().page0()
fenster.mainloop()

额外优化方案

如果需要自定义标识来区分输入框,可以给每个输入框设置name属性,通过event.widget.winfo_name()判断:

# 创建输入框时设置自定义名称
self.efeld = ttk.Entry(fenster, textvariable=self.text, name="input_box_1")
# 在事件函数中判断
if event.widget.winfo_name() == "input_box_1":
    # 针对该输入框的逻辑处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:55:14