tkinter:从第一个字符获取文本框中选定文本的索引

Cap*_*row 3 python tkinter

如何从字符串中的第一个字符获取所选文本的位置。当我做

 ind = textwidget.index("self.first")
Run Code Online (Sandbox Code Playgroud)

我只得到索引为 line.column。我想要的是从第一个字符开始的字符数。这样做的动机是我不必打扰在 UI 中进行格式化的方式,这会导致行数(以及字符串中的换行符)。

是否可以 ?

Bry*_*ley 5

文本小部件有一个名为的方法count,该方法将为您提供两个位置之间字符数的计数。此方法适用于python3,但不适用于python2。但是,python2 有一个简单的修复方法。

对于python3,要获取小部件开头和第一个选定字符之间的字符数,您可以执行以下操作:

count = textwidget.count("1.0", "sel.first")
Run Code Online (Sandbox Code Playgroud)

对于 python2,您必须调用底层 tcl 解释器,因为文本小部件未公开该方法。假设您的根小部件名为root,您可以这样做:

count = root.call(textwidget, "count", "1.0", "sel.first")
Run Code Online (Sandbox Code Playgroud)

count方法有多种选择。例如,可以统计像素数,可以包含或排除隐藏线等。 底层tcl/tk引擎支持的选项的最终列表参见http://tcl.tk/man/tcl8.5 /TkCmd/text.htm#M72