【问题标题】:How do you insert to Text widget without it triggering the <<Modified>> binding?如何在不触发 <<Modified>> 绑定的情况下插入到 Text 小部件?
【发布时间】:2022-08-16 02:29:00
【问题描述】:

我有一个 Text 小部件,我想在打开窗口时自动插入文本,然后我还想检测用户每次使用 \"<< Modified>>\" 绑定修改文本。这并不重要,但我记得之前做过同样的代码,它没有触发 \"<< Modified>>\" 绑定,但现在它突然发生了,所以我更加困惑。这是代码示例:

from tkinter import *

root = Tk()
textBox = Text(root, font=(\"Helvetica\", 20))
textBox.pack()

textBox.insert(END, \"test\")

def on_modifyTextBox():
    print(\"<<Modified>> bind triggered\")

textBox.bind(\"<<Modified>>\", lambda e: on_modifyTextBox())

root.mainloop()

输出:

<<Modified>> bind triggered

那么如何在默认情况下将一些文本插入到 Text 小部件,然后将其绑定到 << Modified>> 而不由它自己触发,而仅由用户触发?

    标签: tkinter textbox python-3.9


    【解决方案1】:

    绑定到 &lt;KeyPress&gt;&lt;KeyRelease&gt; 在技术上确实有效,我可以绑定到它,唯一的问题是即使按下不修改文本小部件的键(如 Ctrl 或 Backspace)它被触发。

    【讨论】:

      【解决方案2】:

      我也发现了同样的问题。看起来这是由于第一次插入文本后文本小部件的修改标志设置为 true。将“测试”测试插入小部件后,使用以下代码行:

      textBox.edit_modified(False)
      

      现在应该允许用户触发事件。

      【讨论】:

        猜你喜欢
        • 2020-08-03
        • 1970-01-01
        • 2011-03-30
        • 2019-01-25
        • 2012-03-12
        • 1970-01-01
        • 2012-11-26
        • 2010-11-17
        • 1970-01-01
        相关资源
        最近更新 更多