如何在 Tkinter 文本小部件中限制仅在指定时间输入文本

How to restrict inputting text only for a specified time in Tkinter Text widget

我正在尝试在 tkinter 中实现一个文本小部件,它只允许在指定时间(此处为 5 秒)输入文本,然后捕获键入的文本,而无需使用调用函数的提交按钮。

我希望时间在用户开始输入时立即开始,并应在 5 秒后阻止用户输入。到目前为止输入的文本应该被捕获。

我试过下面的代码,但没有用。我试着查看文档并进行了网络搜索和许多 Whosebug 讨论主题。我找不到答案。感谢对解决方案的投入。

from tkinter import *

my_window = Tk()
type_txt = Text()
type_txt.grid(row=0, column=0)
type_txt.focus()
type_txt.after(5000, type_txt.configure(state=DISABLED))
typed_text = type_txt.get("1.0", END)

print(typed_text)

my_window.mainloop()
  

您可以将 <key> 事件绑定到一个函数,然后在回调中使用 .after().

在 5 秒后禁用文本框
from tkinter import *

my_window = Tk()

type_txt = Text()
type_txt.grid(row=0, column=0)
type_txt.focus()

def disable_textbox():
    type_txt.configure(state=DISABLED)
    typed_text = type_txt.get("1.0", END)
    print(typed_text)

def start_typing(event):
    # disable <Key> binding
    type_txt.unbind('<Key>')
    # disable text box 5 seconds later
    type_txt.after(5000, disable_textbox)

type_txt.bind('<Key>', start_typing)
my_window.mainloop()