2

我的问题:在我正在编写的 Tkinter 编辑器中,有一种情况是我需要重新加载文件并在我正在编写的地方重新打开它。

我的第一次重新加载尝试是这样的

pos=config.text.index(INSERT)          # memorize where I am
...                                    # do stuff
textopen_and_display(currentfn)        # reopen it
text.mark_set(INSERT,pos)          # go 
text.see(INSERT)                   # there

其中text是我的文本小部件。问题是,以这种方式调用的 .see() 方法没有做我想要的:它向下滚动刚好足以看到 INSERT,然后停止。如果我不在文件顶部可见的第一行,它就不起作用。

我需要的是文本小部件最后可见行的索引:我怎样才能找到它?在这个索引上使用 .see() 应该按我想要的方式工作

PS我什至无法在运行时找到文本小部件的高度,因为我将它定义为小尺寸(高度= 5),并用fill = BOTH,expand = 1包装它:询问text.config()它返回的高度初始值 5

4

1 回答 1

2

要保存滚动位置:

x_pos = text.xview()[0]
y_pos = text.yview()[0] 

要恢复滚动位置:

text.xview(Tkinter.MOVETO, x_pos)
text.yview(Tkinter.MOVETO, y_pos)
于 2012-05-23T16:17:34.257 回答