Python 2.7.6 Tkinter Couper - copier - coller dans un entry

Fermé
xunil2003 Messages postés 766 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2024 - 10 févr. 2020 à 18:31
 trifou - 10 févr. 2020 à 21:04
Bonjour,
Tous est dans le titre.
Je travaille sur une vieille bécane avec python 2.7.6.
Je n'arrive pas a trouver la solution pour faire un couper ou copier et en suite un coller dans les champs de saisi entry nommé ici e1 et e2.
Cependant lorsque je fait un copier du champs de saisi, il apparaît dans presse-papier
Pouvez vous m'aidez ?
Merci d'avance.

Le code :
#! /usr/bin/python
#-*-coding: utf-8 -*-

# python $HOME/Langages/python/2.7.6/Cours/test-couper-copier-coller-entry.py

#----------------------------------------------------------------------------------------
# LIBRAIRIES
#----------------------------------------------------------------------------------------
from Tkinter import *
from tkMessageBox import *
import Tkinter as tk
import Tkinter
import tkMessageBox

#----------------------------------------------------------------------------------------
# FONCTIONS CODE
#----------------------------------------------------------------------------------------
def creer_fenetre_principale():
global fp , e1, e2
fp=Tk()
#fp = tk.Tk()
fp.title("test Couper Couper coller dans un entry")


Label(fp, text="Nom").grid(row=0)
Label(fp, text="Prénom").grid(row=1)

e1 = Entry(fp)
e2 = Entry(fp)
e1.bind("<Button-3><ButtonRelease-3>", active_menu)
e2.bind("<Button-3><ButtonRelease-3>", active_menu)

e1.insert(10, "Dupres")
e2.insert(10, "Charles")

e1.grid(row=0, column=1)
e2.grid(row=1, column=1)

Button(fp, text='Quitter', command=fp.quit).grid(row=3, column=0, sticky=W, pady=4)

Button(fp, text='Valider', command=valider_entry).grid(row=3, column=1, sticky=W, pady=4)

def creer_menu_couper_copier_coller():
global faire_menu
faire_menu(fp) #<---- Couper-Copier-Coller

def message_info(titre, message):
tkMessageBox.showinfo(titre, message)

def valider_entry():
print("Nom : %s\nPrenom : %s" % (e1.get(), e2.get()))
titre = "Informations"
message = "Nom : "+e1.get()+"\n"+"Prénom : "+e2.get()
tkMessageBox.showinfo(titre, message)

def faire_menu(w):
global menu_ccc
menu_ccc = Tkinter.Menu(w, tearoff=0)
menu_ccc.add_command(label="Couper Ctrl+X")
menu_ccc.add_command(label="Copier Ctrl+C")
menu_ccc.add_command(label="Coller Ctrl+V")

def active_menu(e):
w = e.widget
menu_ccc.entryconfigure("Couper Ctrl+X", command=lambda: w.event_generate("<<Couper Ctrl+X>>"))
menu_ccc.entryconfigure("Copier Ctrl+C", command=lambda: w.event_generate("<<Copier Ctrl+C>>"))
menu_ccc.entryconfigure("Coller Ctrl+V", command=lambda: w.event_generate("<<Coller Ctrl+V>>"))
menu_ccc.tk.call("tk_popup", menu_ccc, e.x_root, e.y_root)

def executer_fonctions():
creer_fenetre_principale()
creer_menu_couper_copier_coller()

executer_fonctions()

fp.mainloop()


Merci pour votre aide.

Configuration: Linux / Firefox 72.0
A voir également:

1 réponse

Bonsoir,

Beaucoup de code pour exposer un simple problème.

Que donne ceci ?

try:
    import Tkinter as tk
except:
    import tkinter as tk


class CEntry(tk.Entry):
    def __init__(self, master, conf=None, **kw):
        tk.Entry.__init__(self, conf, **kw)
        self.bind('<Control-v>', self._paste)
        self.bind('<Control-x>', self._cut)

    def _paste(self, evt):
        self.delete(0, tk.END)
        # self.insert(0, self.clipboard_get()) # Normalement fait automatiquement

    def _cut(self, evt):
        self.clipboard_append(self.get())
        self.delete(0, tk.END)


win = tk.Tk()
entry = CEntry(win)
entry.insert(0, 'du texte')
entry.pack()
win.mainloop()
0