首页 > 解决方案 > 如何在 tkinter 的 TextWidget 中获取当前单词

问题描述

假设我有以下TextField设置tkinter

import tkinter as tk

class TextField(object):
    def __init__(self, master, **kwargs):
        self.master = master

        s = tk.Scrollbar(master)
        text = tk.Text(master, height = 40, width = 100)
        s.pack(side = tk.RIGHT, fill = tk.Y)
        text.pack(side = tk.LEFT, fill = tk.Y)
        s.config(command=text.yview)
        text.config(yscrollcommand=s.set)

        text.insert(tk.END, "some string")
        text.bind('<Tab>', self.tabbed_text)

        self.text = text

    def tabbed_text(self, event):
        print(event)
        # now what to do here?

root=tk.Tk()
tf = TextField(root)
root.mainloop()

如何获取[a-zA-Z0-9_]+在函数中输入的当前“单词”(即)tabbed_text()?最终目标是在点击 Tab 时具有某种自动文本功能。

标签: pythontkinter

解决方案


您可以像这样使用 self.text.get() 函数。您可以根据需要修改 get 参数。我希望这能帮到您。

class TextField(object):
    def __init__(self, master, **kwargs):
        self.master = master

        s = tk.Scrollbar(master)
        text = tk.Text(master, height = 40, width = 100)
        s.pack(side = tk.RIGHT, fill = tk.Y)
        text.pack(side = tk.LEFT, fill = tk.Y)
        s.config(command=text.yview)
        text.config(yscrollcommand=s.set)

        text.insert(tk.END, "some string")
        text.bind('<Tab>', self.tabbed_text)

        self.text = text

    def tabbed_text(self, event):
        print(event)
        text = self.text.get("1.0","end")
        self.text.insert(tk.END, text)

root=tk.Tk()
tf = TextField(root)
root.mainloop()

推荐阅读