擅长:python、mysql、java
<p>好吧,我找到了答案(是的,这是一个有目的的答案,这不是我问题的一部分)。在</p>
<p>以下代码将更有效地给出插入文本后剩余的显示行数:</p>
<pre><code>def get_display_lines(start="insert", end="end-1c")
try:
count=myTextWidget.count(start, end, "displaylines")[0]
except TypeError:
count=0
return count
</code></pre>
<p>虽然这样效率更高,但仍然不是完全有效的,并且在处理大文件时会遇到问题(如果在自动滚动期间经常使用箭头键)。count()方法返回一个元组;因此是零索引。因为这并不总是包含一个数字(比如在文档的末尾插入),所以我使用try/except块(尽管您可以通过其他很多方法来实现这一点;但是您可以随意选择)。在</p>
<p>因为这对于大文件来说效率不高,所以您可能只需要保留当前行一次,保存它们,并在更新状态时递增/递减该变量(当然,这需要编辑一堆函数,但效率更高)。不过,您需要在编辑过程中更新总计(幸运的是,在自动滚动时这不太常见)。在</p>
<p>因为处理许多其他函数是一个很大的开销,并且增加了编辑代码的复杂性,所以我建议只在自动滚动的时间间隔内更新它,而不是在用户手动移动光标时更新。另外,为了提高效率,不要让它计算statusbar update方法中的剩余行数(更不用说剩余的时间),而只在计时器调用的方法中保存的变量中计算它,而只在statusbar中打印变量。在</p>