我有一个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:", font = ("consolas", 16) , width = 60)
label2.grid(row = 2, column = 0)
codeinput2 = scrolledtext.ScrolledText(root, height = 10, width = 60, undo = True)
codeinput2["font"] = ("fira code", "15")
codeinput2.grid(row = 3, column = 0)
root.mainloop()
这是我的代码,我如何实现以下内容:
当使用该程序时,假设我正在用两个TextObject中的一个编写,当我按下键"时;控制+F";它增加了";A";到我正在使用的TextObjects的文本?
您可以使用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
绑定到左按钮,然后绑定:
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:", font = ("consolas", 16) , width = 60)
label2.grid(row = 2, column = 0)
codeinput2 = scrolledtext.ScrolledText(root, height = 10, width = 60, 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
的文档。
参见tkinter
的虚拟事件