2013-10-20 32 views
1

我在我的Tkinter GUI中有文本区域。我想实现一个将删除最后一行的撤消功能。为此,我需要获取最后一行的行和列。如何获取Tkinter中文本结束位置的行和列?

如何获得最后一行的行和位置?一旦我获得了职位,我该如何删除该行?

我已经在谷歌搜索了这个,但我没有得到任何有价值的链接。

+0

您是否知道tkinter已撤消内置? –

+0

是的。我知道这一点。但我不确定如何使用它。 我使用undo = true选项创建了文本小部件。然后我们必须调用edit_undo()方法。但我不知道该把它叫做什么,因此也就是混乱。 –

回答

9

最后一行的索引是"end"或tkinter常数END。 tkinter总是在最后插入一个看不见的换行符,所以这实际上代表了用户输入的最后一个字符之后的索引。

您可以使用文本小部件的index方法获取行和列号。因此,例如,与此获得的最后一个字符的行/列:

pos = textwidget.index("end") 

您可以添加改性剂到一个索引,以获得相对于其他位置的位置。例如,要获得行首的索引,您可以追加linestart(例如:“3.5 linestart”会给你3.0)。你也可以通过追加“-n chars”或“-nc”来减去字符(例如:“3.5-1c”会给你3.4)。

这些修饰符可以结合使用。因此,如果想要从最后找到最后一行文本的开头(实际上是在tkinter添加的额外换行符之后),请备份一个字符以结束行,然后使用“linestart”开始:

pos = textwidget.index("end-1c linestart") 

对于它的价值,这是所有记录和相当容易找到。在我写这篇文章的时候,当我在谷歌搜索“tkinter文本小部件”时,第一个结果指向了一个记录文本小部件索引表达式的页面:http://effbot.org/tkinterbook/text.htm。查找名为“表达式”的部分。

要删除一行文本,您需要调用delete方法以及要删除的文本的起始索引和结束索引。要删除最后一行,请使用:

textwidget.delete("end-1c linestart", "end") 
相关问题