我如何在 Entry 小部件 tkinter python 中使用单击+药物左键选择所有文本,如 block 。
e1 = tk.Entry(bop, width = 50, font = "Helvetica 13")
e1.grid(row=1,column=1, padx=15, pady=15)
e1.bind_class("Entry","<Control-a>", select_all(e1))
这里是select_all()
的函数:
def select_all(e):
a = e.select_range(0,tk.END)
SO上有很多类似的例子
import tkinter as tk
def callback(event):
print('e.get():', e.get())
# or more universal
print('event.widget.get():', event.widget.get())
# select text after 50ms
root.after(50, select_all, event.widget)
def select_all(widget):
# select text
widget.select_range(0, 'end')
# move cursor to the end
widget.icursor('end')
root = tk.Tk()
e = tk.Entry(root)
e.pack()
e.bind('<Control-a>', callback)
root.mainloop()
bind
期望没有 ()
的文件名和参数(回调)。还有bind
总是用一个参数执行这个函数 event
可以访问执行此函数的条目 event.widget
因此您可以将它与许多不同的条目一起使用。最后 Entry
有.get()
获取所有文本。
编辑:
因为在释放 key 之后<Control-a>
选择已删除,所以我使用 after()
50ms 后执行选择。它选择所有文本(但它将光标移动到开头)并将光标移动到结尾。 (见上面的代码)
编辑:
之前我找不到与 Release
的正确组合但它必须是 <Control-KeyRelease-a>
现在它不需要 after()
import tkinter as tk
def callback(event):
print('e.get():', e.get())
# or more universal
print('event.widget.get():', event.widget.get())
# select text
event.widget.select_range(0, 'end')
# move cursor to the end
event.widget.icursor('end')
root = tk.Tk()
e = tk.Entry(root)
e.pack()
e.bind('<Control-KeyRelease-a>', callback)
root.mainloop()
我是一名优秀的程序员,十分优秀!