【问题标题】:understanding the insert method in Tkinter's Entry widget了解 Tkinter 的 Entry 小部件中的插入方法
【发布时间】:2017-07-17 08:46:00
【问题描述】:

我一直在阅读有关 Python 的 Tkinter 的教程,我目前正在使用 Entry 小部件,并且刚刚遇到了 insert 方法。我了解该方法的作用(使默认字符串出现在文本输入字段中),但我没有得到的是该方法的第一个参数,据我所知,它是字符串应该开始的索引。现在混乱来了。在使用它时,为 index 参数提供不同的值,每次我运行它时,文本都会出现在同一个位置(在最开始时)。因此,据我所知,我要么做错了什么,要么误解了文档。这是我的代码中的一个 sn-p:

 e1 = Entry(master)
 e1.insert(0,"First Name")

当我运行这个时,如果索引是 0、10 或 100,文本“名字”总是出现在文本字段的开头

【问题讨论】:

    标签: python user-interface tkinter


    【解决方案1】:

    在这一行:

    text.insert('1.0', 'here is my\ntext to insert')
    

    这里的“1.0”是插入文本的位置,可以读作“line 1, character 0”。这是指第一行的第一个字符。从历史上看,尤其是在 Unix 上,程序员倾向于认为行号从 1 开始,字符位置从 0 开始。

    要插入的文本只是一个字符串。因为小部件可以保存多行文本,所以我们提供的字符串也可以是多行的。为此,只需在字符串中的适当位置嵌入 \n(换行符)字符。

    来自 Tk 文档 https://tkdocs.com/tutorial/text.html

    【讨论】:

      【解决方案2】:

      首先,“使​​默认字符串出现”这句话并不完全正确。虽然它可用于插入默认文本,但更正确地描述为插入文本、句点。它可以是默认文本、替换文本、附加文本,任何你想要的。

      第一个字符之前的任何索引都被视为 0(零)。最后一个字符之后的任何索引都被视为结尾。当您在一个空的条目小部件中插入内容时,每个索引都被视为 0。因此,索引对于将文本插入现有文本的某处非常有用。

      例如:

      e1 = Entry(master)
      e1.insert(0, "hello")
      e1.insert("end", "world")
      e1.insert(5, ", ")
      

      作为应用程序程序员,您几乎不会将insert 方法与索引0(零)或“结束”或“插入”以外的任何内容一起使用。但是,当您尝试添加高级功能(例如:拼写检查、自动完成等)时,您会发现索引非常有用。

      【讨论】:

      • 谢谢!现在这很有意义。我什至没有想过在现有文本中插入文本。我认为我的困惑来自我正在阅读的教程,他们在其中有: e1.insert(10, "jane") 在一个空的条目小部件上。
      猜你喜欢
      • 2012-02-16
      • 2012-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-06
      • 2014-09-26
      • 2016-12-27
      • 1970-01-01
      相关资源
      最近更新 更多