我需要文本框显示行号。
时间: 2023-09-02 16:06:22 浏览: 199
要在文本框中显示行号,您可以使用Tkinter Text组件的tag功能。以下是一个简单的示例代码:
```
import tkinter as tk
root = tk.Tk()
root.geometry("300x200")
# 创建滚动条
scrollbar = tk.Scrollbar(root)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)
# 创建文本框并关联滚动条
text_box = tk.Text(root, yscrollcommand=scrollbar.set)
text_box.pack(side=tk.LEFT, fill=tk.BOTH)
scrollbar.config(command=text_box.yview)
# 添加行号标记
def update_line_numbers(event=None):
text_box.delete("line_numbers")
for i, line in enumerate(text_box.get("1.0", "end").split("\n")):
text_box.insert(f"{i+1}.0", f"{i+1}\n", "line_numbers")
text_box.bind("<KeyRelease>", update_line_numbers)
text_box.tag_configure("line_numbers", justify="right")
root.mainloop()
```
在此示例中,我们首先创建一个Text对象和一个Scrollbar对象,并将它们关联起来。然后,我们定义一个名为update_line_numbers的函数,当用户输入文本或执行其他操作时,它将更新行号标记。该函数首先删除所有现有的行号标记,然后遍历文本框中的所有行并在每行的开头插入行号。最后,我们使用tag_configure方法将“line_numbers”标记配置为右对齐。
最后,我们使用bind方法将<KeyRelease>事件绑定到文本框上,并将它们关联到update_line_numbers函数。这样,每当用户输入文本或执行其他操作时,行号就会自动更新。
阅读全文