如何在 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()
我正在尝试在 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()
.
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()