【问题标题】:Tkinter text integer to text indexTkinter 文本整数到文本索引
【发布时间】:2017-11-29 19:55:23
【问题描述】:

有没有办法将整数获取到有效的 Tkinter 文本小部件位置。例如,0 将更改为 '1.0',如果第 1 行没有字符,1 将转到 '2.0'。我知道小部件的 index 方法,但只是为了获取光标位置(如果这是答案)。

非常感谢

编辑

我相信(现在已经对此事进行了更多研究)Tk Text 小部件延迟加载文本(为了性能)。因此,如果您没有获取整个文本内容并对其执行字符串操作,我认为这是不可能的(Tk Text 对当前查看的文本上方和下方的内容只有很少的了解 - 因此为什么水平滚动条会不断垂直滚动时调整)。

【问题讨论】:

  • 如果第一行没有字符,则不能有“2.0”。 “2.0”的唯一可能方法是第 1 行有换行符。
  • 让我们选择一个随机整数。例如,“13”。应该返回什么文本小部件位置?你是问如何计算第N个字符的索引(即:“13”表示第13个字符)?
  • 不,你可以(使用代码获取行长)获取整数的文本索引(另外,对不起,这就是我所说的新行的意思)。
  • 我仍然不知道“获取整数的文本索引”是什么意思。 13 是一个整数。您希望从中获得什么指数?
  • 抱歉,Tkinter 文本小部件的字符串索引(例如,1.0 用于从中检索值)

标签: python python-3.x tkinter


【解决方案1】:

文本小部件支持对索引的许多修饰符。例如,您可以通过添加或减去字符或行来获取现有索引并计算新索引。例如,如果要获取第 2 行的前 10 个字符,可以使用 "2.0 + 10 chars"(或更紧凑的 "2.0+10c")。如果您想要文本小部件中的第 100 个字符,您可以使用"1.0+100c" 等。

除字符外,还可以加减行(如:"end-1line"),可以得到一个单词或一行的开始或结束(如:"end-1c linestart"表示最后一行的第一个字符)小部件)。

您可以在规范的 tcl/tk 文档中了解索引可以采用的所有形式:http://tcl.tk/man/tcl8.5/TkCmd/text.htm#M7

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 2020-09-09
    相关资源
    最近更新 更多