cmd + a无法在tkinter条目中工作

时间:2017-07-25 10:54:57

标签: python tkinter

我正在使用Tkinter构建基本UI,我注意到 cmd + a (或选择所有命令)未启用。

如何启用tkinter中的所有快捷方式,尤其是输入文本字段。

这是我的代码:

entry1 = ttk.Entry(root, width = 60)
entry1.pack()

2 个答案:

答案 0 :(得分:5)

如果tkinter没有定义你想要的shorcuts,你可以通过绑定键盘事件来定义你自己的shorcuts。

import tkinter as tk
import tkinter.ttk as ttk

def callback(ev):
    ev.widget.select_range(0, 'end') 

root = tk.Tk()
entry = ttk.Entry(root)
entry.pack()
entry.bind('<Command-a>', callback)
root.mainloop()

我认为Command是cmd键的正确前缀,但我没有要测试的mac。在Windows中,它绑定到控制键。

答案 1 :(得分:3)

@Goyo已经回答了你的问题。我想分享我的贡献,因为我没有兴趣选择Entry小部件文本的文本,而没有做任何其他事情。因此,我将为您提供一个脏的MCVE,以显示您将如何使用所选文本: a)您要删除它还是 b)您将复制它

对于 a),以下功能将完成此任务:

def select_text_or_select_and_copy_text(e):
    e.widget.select_range(0, 'end') 

它将在您将函数的名称描述的相应事件绑定到条目小部件的条件下工作:

entry.bind('<Control-a>', select_text_or_select_and_copy_text)
entry.bind('<Control-c>', select_text_or_select_and_copy_text) 

对于 b),您可以使用此功能:

def delete_text(e):
    e.widget.delete('0', 'end') 

Delete事件绑定到条目小部件:

entry.bind('<Delete>', delete_text)

我在 Ubuntu 上尝试了这个MCVE,它可以运行:

import tkinter as tk
import tkinter.ttk as ttk


def select_text_or_select_and_copy_text(e):
    e.widget.select_range(0, 'end')     

def delete_text(e):
    e.widget.delete('0', 'end')


root = tk.Tk()

entry = ttk.Entry(root)
entry.pack()

entry.bind('<Control-a>', select_text_or_select_and_copy_text)
entry.bind('<Control-c>', select_text_or_select_and_copy_text)
entry.bind('<Delete>', delete_text)

root.mainloop()