如何解决Tkinter 使用键将字符串添加到文本对象
我有一个 Tkinter 脚本,它定义了两个文本对象, 我需要当从键盘上按下一个键时,让我们说键“A” 程序在我正在使用的文本对象中写入“A”,我如何检测我正在使用的文本对象是什么?
import tkinter as tk
import tkinter.scrolledtext as scrolledtext
root = tk.Tk()
root.geometry("900x900")
root.minsize(height = 900,width = 900)
root.title("Title")
label1 = tk.Label(root,text = "A:",font = ("consolas",16),width = 60)
label1.grid(row = 0,column = 0)
codeinput1 = scrolledtext.ScrolledText(root,height = 10,width = 60,undo = True)
codeinput1["font"] = ("fira code","15")
codeinput1.grid(row = 1,column = 0)
label2 = tk.Label(root,text = "B:",width = 60)
label2.grid(row = 2,column = 0)
codeinput2 = scrolledtext.ScrolledText(root,undo = True)
codeinput2["font"] = ("fira code","15")
codeinput2.grid(row = 3,column = 0)
root.mainloop()
在使用该程序时,假设我正在使用两个 TextObjects 之一进行书写,当我按下“Control+F”键时,它会在我正在使用的 TextObjects 的文本中添加“A”?
解决方法
您可以使用bind
方法来使用Ctrl+F:
def insert_text(event):
codeinput2.insert(tk.END,'A')
codeinput1.insert(tk.END,'A')
root.bind("<Control-f>",insert_text)
root.mainloop()
如果要添加到当前的,可以将scrolledtext.ScrolledText
绑定到Left Button,然后再绑定:
import tkinter as tk
import tkinter.scrolledtext as scrolledtext
root = tk.Tk()
root.geometry("900x900")
root.minsize(height = 900,width = 900)
root.title("Title")
label1 = tk.Label(root,text = "A:",font = ("consolas",16),width = 60)
label1.grid(row = 0,column = 0)
codeinput1 = scrolledtext.ScrolledText(root,height = 10,width = 60,undo = True)
codeinput1["font"] = ("fira code","15")
codeinput1.bind("<ButtonPress-1>",lambda event: codeinput1.bind("<Control-f>",insert_text))
codeinput1.grid(row = 1,column = 0)
label2 = tk.Label(root,text = "B:",width = 60)
label2.grid(row = 2,column = 0)
codeinput2 = scrolledtext.ScrolledText(root,undo = True)
codeinput2["font"] = ("fira code","15")
codeinput2.bind("<ButtonPress-1>",lambda event: codeinput2.bind("<Control-f>",insert_text))
codeinput2.grid(row = 3,column = 0)
def insert_text(event):
event.widget.insert(tk.END,'A')
root.mainloop()
参见 bind
的 documentation。
请参阅 virtual events 以了解 tkinter
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。