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()
furas的答案很好,但仍然不能完美地模拟windows的Ctrl+a行为。事件仅在释放“a”键后激发,但事件应在按“a”键时激发。在
从Python tkinter: stopping event propagation in text widgets tags开始,停止事件传播是我们需要的。返回“break”将停止以下事件破坏ctrl+a行为,并允许我们缩短绑定到“<;Control-a>;”
类似的例子太多了
bind
需要没有()
和参数(回调)的文件名。但是bind
总是用一个参数event
来执行这个函数,这个参数允许访问执行这个函数的条目event.widget
,这样你就可以在许多不同的条目中使用它了。最后,Entry
有{编辑:
因为释放键后
<Control-a>
选择被移除,所以我使用after()
在50ms后执行选择,它选择所有文本(但它将光标移到开始处)并将光标移到末尾。(见上述代码)编辑:
以前我找不到与
^{pr2}$Release
的正确组合,但它必须是<Control-KeyRelease-a>
,现在它不需要after()
相关问题 更多 >
编程相关推荐