鱼C论坛

 找回密码
 立即注册
查看: 85|回复: 2

[已解决]Tkinter 焦点问题

[复制链接]
发表于 2025-8-17 17:28:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

  1. from tkinter import *
  2. root=Tk()
  3. m=["北京","天津","上海","重庆"]
  4. for i in m :
  5.      n=Button(root,text=i)
  6.      n.pack()
  7.      n.focus_set()
  8. mainloop()
复制代码


程序运行后,要求焦点要落在【北京

最佳答案
2025-8-17 19:33:50
from tkinter import *

root = Tk()
m = ["北京", "天津", "上海", "重庆"]
buttons = []  # 创建存储按钮的列表

for i in m:
    n = Button(root, text=i)
    n.pack()
    buttons.append(n)  # 将按钮添加到列表

# 循环结束后设置第一个按钮(北京)的焦点
if buttons:  # 确保列表不为空
    buttons[0].focus_set()

mainloop()
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2025-8-17 17:32:41 | 显示全部楼层
在Tkinter中,焦点设置会覆盖之前的设置,循环中最后设置的按钮(上海)会获得焦点。要使焦点落在[北京]按钮上,需要单独设置并保留其引用:

  1. from tkinter import *

  2. root = Tk()
  3. m = ["北京", "上海"]  # 确保包含目标按钮文本

  4. # 创建列表存储按钮引用
  5. buttons = []
  6. for text in m:
  7.     btn = Button(root, text=text)
  8.     btn.pack()
  9.     buttons.append(btn)  # 保存引用到列表

  10. # 单独设置北京按钮焦点
  11. for btn in buttons:
  12.     if btn["text"] == "北京":  # 通过文本匹配目标按钮
  13.         btn.focus_set()
  14.         break  # 找到后立即退出循环

  15. mainloop()
复制代码


**关键点说明:**
1. 用列表 buttons 存储所有按钮对象
2. 循环结束后再单独遍历查找文本为"北京"的按钮
3. 找到后调用 focus_set() 并跳出循环
4. 循环创建时不能直接设置焦点(会被后续覆盖)

**其他方案:**
若按钮顺序固定(如北京是第一个),可直接:
  1. first_btn = buttons[0]
  2. first_btn.focus_set()
复制代码


以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2025-8-17 19:33:50 | 显示全部楼层    本楼为最佳答案   
from tkinter import *

root = Tk()
m = ["北京", "天津", "上海", "重庆"]
buttons = []  # 创建存储按钮的列表

for i in m:
    n = Button(root, text=i)
    n.pack()
    buttons.append(n)  # 将按钮添加到列表

# 循环结束后设置第一个按钮(北京)的焦点
if buttons:  # 确保列表不为空
    buttons[0].focus_set()

mainloop()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-30 22:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表