Il y avait tant d'exemples similaires sur le 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
sans nom de fichier ()
attend et arguments (rappel). Mais aussi bind
exécute cette fonction toujours avec un argument event
qui donne accès à l'entrée qui a exécuté cette fonction event.widget
de sorte que vous pouvez l'utiliser avec de nombreuses entrées différentes. Et enfin Entry
a .get()
pour obtenir tout le texte.
EDIT:
Parce que après avoir relâché les touches <Control-a>
sélection est supprimée si j'utilise after()
pour exécuter la sélection après 50ms. Il sélectionne tout le texte (mais déplace le curseur au début) et déplace le curseur jusqu'à la fin. (Voir code ci-dessus)
EDIT:
Avant que je ne pouvais pas trouver la bonne combinaison avec Release
, mais il doit être <Control-KeyRelease-a>
et maintenant il n'a pas besoin 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()
'bind' attend le nom de la fonction (callback) - cela signifie sans'()) et arguments. Vous pouvez créer une fonction sans arguments qui utilise votre fonction avec des arrangements, ou utiliser lambda: 'bind (..., lambda: select_all (e1))' – furas
BTW: 'Entry' a la méthode' get() 'pour obtenir tout le texte. – furas