如何获取Tkinter文本元素中光标显示所在行(非内容行)
获取Tkinter Text组件中光标实际显示行号
要拿到光标在Text组件里实际显示的行号,而非原文本的逻辑行号,可以用Text组件的count方法,指定displaylines参数统计显示行数:
- 先获取当前光标对应的逻辑索引(比如
1.45) - 调用
count方法,计算从文本起始位置(1.0)到光标索引之间的显示行数,再加1就是光标所在的显示行号(因为计数从0开始)
示例代码
import tkinter as tk def get_display_line_num(): cursor_pos = text.index(tk.INSERT) # count返回的元组第一个元素是显示行数,加1转为从1开始的行号 display_line = text.count("1.0", cursor_pos, displaylines=True)[0] + 1 print(f"光标实际显示行:{display_line}") root = tk.Tk() text = tk.Text(root, wrap=tk.WORD, width=25, height=4) text.pack(padx=10, pady=10) # 插入一段会自动换行的测试文本 text.insert(tk.END, "这是一段长度超过Text组件宽度的文本,会被自动拆分成多行显示") tk.Button(root, text="查看显示行号", command=get_display_line_num).pack(pady=5) root.mainloop()
关键说明
wrap=tk.WORD是按单词自动换行的模式,如果你用的是wrap=tk.CHAR(按字符换行),这个方法同样生效displaylines=True是count方法的核心参数,让它统计实际渲染的显示行数,而非原文本的逻辑行
内容的提问来源于stack exchange,提问作者357865
相关产品推荐
相关产品推荐

