将垂直条或其他标记添加到特定列的 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 获取坐标,然后删除虚拟文本。每当更改显示字体时重复此操作。
  • 线条必然会出现在任何文本或选择区域的顶部,这与我对此类功能所期望的视觉外观不太一样。