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
相关产品推荐
相关产品推荐

