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

TKINTER点击按钮向当前焦点Entry输入框输入X/O的实现问题

输入框和按钮的界面截图

实现方案

我们可以通过记录当前获得焦点的输入框对象,点击按钮时直接向该对象写入内容,修改代码步骤如下:

  • 新增全局变量存储当前聚焦的输入框
  • 给所有Entry组件绑定<FocusIn>焦点事件,每次输入框获得焦点时更新全局变量
  • 合并重复的符号写入函数,统一操作当前聚焦的输入框

修改后的完整可运行代码如下:

from tkinter import *

root=Tk()
# 存储当前获得焦点的输入框
current_entry = None

# 焦点进入输入框时触发,更新当前聚焦的输入框
def set_current_entry(event):
    global current_entry
    current_entry = event.widget

# 写入符号到当前聚焦的输入框
def enter_sign(sign):
    if current_entry:
        current_entry.delete(0, END)
        current_entry.insert(0, sign)

e1=Entry(root,font=("arial",50),width=2,borderwidth=5)
e2=Entry(root,font=("arial",50),width=2,borderwidth=5)
e3=Entry(root,font=("arial",50),width=2,borderwidth=5)
e4=Entry(root,font=("arial",50),width=2,borderwidth=5)
e5=Entry(root,font=("arial",50),width=2,borderwidth=5)
e6=Entry(root,font=("arial",50),width=2,borderwidth=5)
e7=Entry(root,font=("arial",50),width=2,borderwidth=5)
e8=Entry(root,font=("arial",50),width=2,borderwidth=5)
e9=Entry(root,font=("arial",50),width=2,borderwidth=5)

# 给所有输入框绑定焦点事件
for entry in [e1,e2,e3,e4,e5,e6,e7,e8,e9]:
    entry.bind('<FocusIn>', set_current_entry)

b1=Button(root,text=("X"),command=lambda: enter_sign("X"),fg="blue")
b2=Button(root,text=("O"),command=lambda: enter_sign("O"),fg="red")

b3=Button(root,text="Exit Program",command=root.quit)

e1.grid(row=0 , column=0,padx=5,pady=20)
e2.grid(row=0 , column=1,padx=5,pady=20)
e3.grid(row=0 , column=2,padx=5,pady=20)
e4.grid(row=1 , column=0,padx=5,pady=20)
e5.grid(row=1 , column=1,padx=5,pady=20)
e6.grid(row=1 , column=2,padx=5,pady=20)
e7.grid(row=2 , column=0,padx=5,pady=20)
e8.grid(row=2 , column=1,padx=5,pady=20)
e9.grid(row=2 , column=2,padx=5,pady=20)

b1.grid(row=3,column=0)
b3.grid(row=4,column=1)
b2.grid(row=3,column=2)

root.mainloop()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:09:03