Tkinter 焦点问题
from tkinter import *
root=Tk()
m=["北京","天津","上海","重庆"]
for i in m :
n=Button(root,text=i)
n.pack()
n.focus_set()
mainloop()
程序运行后,要求焦点要落在【北京】
在Tkinter中,焦点设置会覆盖之前的设置,循环中最后设置的按钮(上海)会获得焦点。要使焦点落在[北京]按钮上,需要单独设置并保留其引用:
from tkinter import *
root = Tk()
m = ["北京", "上海"]# 确保包含目标按钮文本
# 创建列表存储按钮引用
buttons = []
for text in m:
btn = Button(root, text=text)
btn.pack()
buttons.append(btn)# 保存引用到列表
# 单独设置北京按钮焦点
for btn in buttons:
if btn["text"] == "北京":# 通过文本匹配目标按钮
btn.focus_set()
break# 找到后立即退出循环
mainloop()
**关键点说明:**
1. 用列表 buttons 存储所有按钮对象
2. 循环结束后再单独遍历查找文本为"北京"的按钮
3. 找到后调用 focus_set() 并跳出循环
4. 循环创建时不能直接设置焦点(会被后续覆盖)
**其他方案:**
若按钮顺序固定(如北京是第一个),可直接:
first_btn = buttons
first_btn.focus_set()
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 from tkinter import *
root = Tk()
m = ["北京", "天津", "上海", "重庆"]
buttons = []# 创建存储按钮的列表
for i in m:
n = Button(root, text=i)
n.pack()
buttons.append(n)# 将按钮添加到列表
# 循环结束后设置第一个按钮(北京)的焦点
if buttons:# 确保列表不为空
buttons.focus_set()
mainloop()
页:
[1]