1

我无法捕获 Tkinter Text 的小部件第一行代码

在两种情况下,在输入文本小部件字段中输入和不输入换行符。

此外

  • 我想捕获第二行代码
  • 然后是第三行。

我不是说,排队换行符 char
我的意思是一行,如 chars 中文本小部件的 length = width 的行

传递floatsandstrings作为参数和文字来测试不那么通用和持久的简单案例。

inputText = self.windowIn.get(1.0, 2.0)

这会抓取输入行末尾的所有内容(意思是直到第一个换行符)。

4

1 回答 1

1

如果要获取特定数量的字符,可以在索引上使用修饰符。例如,要获取第 1 行的前 30 个字符,您可以使用类似self.windowIn.get('1.0', '1.0+30c')

文本小部件还具有“显示线”的概念。显示线代表您所看到的,考虑到小部件完成的包装。如果有 60 个字符宽的行并且文本以 30 个字符换行,则可以使用display子修饰符获取显示行上的所有字符,而不是整行。

例如,考虑一个看起来像这样的小部件,其中一行包含 30 个字符(即:数据中没有换行符):

123456789012345678901234567890
123456789012345678901234567890
123456789012345678901234567890

索引1.0 display lineend与 相同1.29,因为这是第 30 个字符的索引。

当您为该get方法提供第二个索引时,它会返回该索引之前的所有字符,但不包括该索引处的字符。因此,在获取显示行时,您需要将一个字符添加到结束索引以捕获最后一个字符。

因此,将所有这些放在一起,您可以使用以下命令获取第一显示行上的所有文本:

self.windowIn.get("1.0", "1.0 display lineend +1c").

有关文本小部件索引的规范描述,请参阅此处的官方 tcl/tk 文档:http: //tcl.tk/man/tcl8.5/TkCmd/text.htm#M7

于 2019-09-21T17:41:34.857 回答