python - CTRL + a 在条目小部件 tkinter python 中全选

标签 python user-interface tkinter ctrl tkinter-entry

我如何在 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()

关于python - CTRL + a 在条目小部件 tkinter python 中全选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41477428/

相关文章:

android - 设计带有动画的复杂 Android UI

c++ - 为什么延迟加载的 QWidget 会显示出来,而存储的 QWidget 却不会?

python - Tkinter 复选框取消输入字段中的星号

python - 从 Tkinter 按钮打开 turtle 输入框后,turtle.listen() 没有响应

Python:在另一个类中访问一个类的属性和方法

python - 如何对每列中的所有值求和并将每列除以求和值

python - Sklearn 高斯混合锁定参数?

java - 创建一个类似 "Notification Bar"的菜单

python:当类属性、实例属性和方法都同名时会发生什么?

python - Tkinter:从按钮处理程序访问 Canvas