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:", 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的虚拟事件

最新更新