Las cajas de texto (clases ttk.Entry y tk.Entry) proveen por defecto la funcionalidad de copiar, cortar y pegar contenido vía los atajos del teclado, no así el clásico menú contextual como se muestra en la siguiente imagen.
No obstante, implementarlo manualmente es una tarea más o menos sencilla. Creamos una nueva clase a la que llamaremos EntryEx, que heredará toda la funcionalidad de ttk.Entry, pero además añadirá las opciones de copiar, cortar y pegar usando un menú contextual.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tkinter as tk
from tkinter import ttk
class EntryEx(ttk.Entry):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.menu = tk.Menu(self, tearoff=False)
self.menu.add_command(label="Copiar", command=self.popup_copy)
self.menu.add_command(label="Cortar", command=self.popup_cut)
self.menu.add_separator()
self.menu.add_command(label="Pegar", command=self.popup_paste)
self.bind("<Button-3>", self.display_popup)
def display_popup(self, event):
self.menu.post(event.x_root, event.y_root)
def popup_copy(self):
self.event_generate("<<Copy>>")
def popup_cut(self):
self.event_generate("<<Cut>>")
def popup_paste(self):
self.event_generate("<<Paste>>")
root = tk.Tk()
entry = EntryEx(root)
entry.pack()
root.mainloop()
De este modo, cada vez que precisemos una caja de texto con tal funcionalidad, crearemos una instancia de EntryEx.
Curso online 👨💻
¡Ya lanzamos el curso oficial de Recursos Python en Udemy!
Un curso moderno para aprender Python desde cero con programación orientada a objetos, SQL y tkinter en 2024.
Consultoría 💡
Ofrecemos servicios profesionales de desarrollo y capacitación en Python a personas y empresas. Consultanos por tu proyecto.

Daniel says:
Hola gente, tengo una intriga y espero que puedan evacuar
mi duda, ¿es muy complicado construir el mismo código sin
utilizar clases?, soy nuevo en tkinter y lo necesito para mi
editor de texto, desde ya muchas gracias.-
Recursos Python says:
Hola, Daniel.
Sí, lo podemos ver en el foro.
Saludos
ElXocas says:
muy buena informacion y bastante educativa, muchas gracias 😀