Tkinter文本小部件中的文本事件

use*_*399 2 python tkinter

我可以知道是否可以在tkinter文本小部件中为文本创建事件?例如,我单击文本框上的单词,弹出一个小窗口并给出该单词的简短定义.

Bry*_*ley 6

您可以像对待任何其他窗口小部件一样向文本窗口小部件添加绑定.我认为这就是"创造一个事件"的意思.

在下面的示例中,我绑定到鼠标按钮的释放并突出显示光标下的单词.您可以轻松弹出一个窗口,在其他地方显示该单词等.

import Tkinter as tk

class Example(tk.Frame):
    def __init__(self, parent):
        tk.Frame.__init__(self, parent)
        self.text = tk.Text(self, wrap="none")
        self.text.pack(fill="both", expand=True)

        self.text.bind("<ButtonRelease-1>", self._on_click)
        self.text.tag_configure("highlight", background="green", foreground="black")

        with open(__file__, "rU") as f:
            data = f.read()
            self.text.insert("1.0", data)

    def _on_click(self, event):
        self.text.tag_remove("highlight", "1.0", "end")
        self.text.tag_add("highlight", "insert wordstart", "insert wordend")

if __name__ == "__main__":
    root = tk.Tk()
    Example(root).pack(fill="both", expand=True)
    root.mainloop()
Run Code Online (Sandbox Code Playgroud)


Bri*_*ius 2

对的,这是可能的。您可以使用该函数将标签添加到单词或文本区域tag_add,然后使用该tag_bind方法(带有<Button>事件)使文本“可单击”。

您可以创建一个新的TopLevel小部件以在回调函数中弹出新窗口。