如何在Tkinter中获取文本结束位置的行和列?
问题内容:
我的Tkinter GUI中有文本区域。我想实现一个撤消功能,它将删除最后一行。为此,我需要获取最后一行的行和列。
如何获得最后一行的行和位置?一旦获得职位,如何删除该行?
我已经在Google上搜索了此文件,但没有任何有价值的链接。
问题答案:
最后一行的索引是"end"
或tkinter常数END
。tkinter总是在末尾插入不可见的换行符,因此它实际上表示用户输入的最后一个字符之后的索引。
您可以使用index
文本小部件的方法获取行号和列号。因此,例如,使用以下命令获取最后一个字符的行/列:
pos = textwidget.index("end")
您可以向索引添加修饰符,以获得相对于另一个位置的位置。例如,要获取行首的索引,可以附加linestart
(例如:“ 3.5
linestart”将得到3.0)。您还可以通过附加“ -n字符”或“ -nc”来减去字符(例如:“ 3.5-1c”将为3.4)。
这些修饰符可以结合使用。因此,如果要查找要从结尾开始的文本的最后一行的开始(实际上是在tkinter添加的额外换行符之后),请备份一个字符以到达该行的结尾,然后使用“
linestart”开始:
pos = textwidget.index("end-1c linestart")
值得一提的是,所有内容均已记录在案,而且非常容易找到。在撰写本文时,当我在Google上搜索“
tkinter文本小部件”时的第一个结果指向记录该文本小部件索引表达式的页面:http
:
//effbot.org/tkinterbook/text.htm。查找名为“表达式”的部分。
要删除一行文本,您需要使用要删除的文本delete
的开始和结束索引来调用该方法。要删除最后一行,请使用以下命令:
textwidget.delete("end-1c linestart", "end")