将垂直条或其他标记添加到特定列的 tkinter 文本小部件
Adding a vertical bar or other marker to tkinter Text widgets at a particular column
我的目的是在 IDLE 中添加一个竖线以指示第 80 列的首选行长度。
我试图为 Text tkinter 小部件找到允许这样做的配置选项,但一无所获。
我希望它是一个简单的配置选项,这样我就可以在 Python\Lib\idlelib.
中找到的 EditorWindow.py 中的 text_options 字典中添加另一个项目
我不确定 styles/themes 是如何工作的,但他们是否能够更改文本小部件中仅 1 列的背景颜色?
可能的解决方案概述:
- 创建一个 1 像素宽的框架,具有对比色背景,作为文本的子项。
- 使用
.place()
将框架定位在适当的水平坐标。
可能的问题:
- 我没有看到任何简单的方法来获取特定列的坐标。
Text.bbox("1.80")
看起来很有希望,但除非该行中实际上已经有 80 个字符,否则它不起作用。您可能需要先插入一个 80 字符的虚拟行,调用 update_idletasks
获取计算位置的文本,调用 bbox
获取坐标,然后删除虚拟文本。每当更改显示字体时重复此操作。
- 线条必然会出现在任何文本或选择区域的顶部,这与我对此类功能所期望的视觉外观不太一样。
我的目的是在 IDLE 中添加一个竖线以指示第 80 列的首选行长度。
我试图为 Text tkinter 小部件找到允许这样做的配置选项,但一无所获。
我希望它是一个简单的配置选项,这样我就可以在 Python\Lib\idlelib.
中找到的 EditorWindow.py 中的 text_options 字典中添加另一个项目我不确定 styles/themes 是如何工作的,但他们是否能够更改文本小部件中仅 1 列的背景颜色?
可能的解决方案概述:
- 创建一个 1 像素宽的框架,具有对比色背景,作为文本的子项。
- 使用
.place()
将框架定位在适当的水平坐标。
可能的问题:
- 我没有看到任何简单的方法来获取特定列的坐标。
Text.bbox("1.80")
看起来很有希望,但除非该行中实际上已经有 80 个字符,否则它不起作用。您可能需要先插入一个 80 字符的虚拟行,调用update_idletasks
获取计算位置的文本,调用bbox
获取坐标,然后删除虚拟文本。每当更改显示字体时重复此操作。 - 线条必然会出现在任何文本或选择区域的顶部,这与我对此类功能所期望的视觉外观不太一样。