IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

editer un texte affiché


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 8
    Par défaut editer un texte affiché
    Bonjour

    je début en python.
    Je réalise un petit programme cryptant un texte par la méthode de César et je souhaiterai que le résultat s'affiche dans une zone de saisie de texte (pour le copier) et non juste dans la fenêtre

    voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    # -*- coding: cp1252 -*-  # Définition l'encodage des caractères
    import Tkinter  # le programme va aller chercher toutes les fonctions de la librairie Tkinter
     
    # fonction de chiffrement
    def Chiffrement(caractere,clef):
        if caractere+clef>127: # Cas ou le décalage dépasse de la table ascii
            return (caractere+clef-127) 
        else:
            return (caractere+clef) # Réalise le décalage dans la cas non accentuée, retourne un entier
     
     
    def chiffreCesar():
        clef = cle.get()%128 #mise à l'echelle de la clef <128
        MessageInter =[] # Cette variable list contiendra le message en ascii décalé de 65 (code ASCII de A).
        MessageInter = [ord(i) for i in texteclair.get()]
        MessageCode='' # chaîne de caractères qui contiendra le cryptogramme.
     
        # concaténation des caractères de rang i pour obtenir le texte clair
        for i in MessageInter:
            MessageCode = MessageCode+chr(Chiffrement(i,clef))
     
        affichage['text'] =MessageCode
     
    # ---------------------------------------------------
    # Debut
    # ---------------------------------------------------
     
     
    # création de la fenêtre, avec le nom code césar 
    Fenetre = Tkinter.Tk()
    Fenetre.title('Code César')
    Fenetre.geometry("400x300") # définie la dimension minimale de la fenêtre
    Fenetre.maxsize(1024,768) # taille maximum de la fenetre
     
    #Création des zones de saisie à partir de la classe Label().
    # fenêtre de saisie texte à coder
    saisietexte = Tkinter.Label(Fenetre, text = 'texte à coder:')
    saisietexte.pack() # commande d'affichage du label
    texteclair=Tkinter.StringVar() # variable pour recevoir le texte saisi
    texteclairlu = Tkinter.Entry(textvariable=texteclair, width=50) # saisie du texte
    texteclairlu.pack()
     
    # fenêtre de la sasie de la clé
    saisiecle = Tkinter.Label(Fenetre, text = 'clé ?')
    saisiecle.pack()
    cle=Tkinter.IntVar()
    clelue = Tkinter.Entry(textvariable=cle, width=10)
    clelue.pack()
     
    # création du bouton crypter
    bouton = Tkinter.Button(Fenetre, text =' CRYPTER', command=chiffreCesar)
    bouton.pack()
     
    # gestion affichage texte codé
    textecode = Tkinter.Label(Fenetre, text='Texte codé :')
    textecode.pack()
    affichage = Tkinter.Label(Fenetre, width=30)
    affichage.pack()
     
    Fenetre.mainloop()## lance le gestionnaire d'événements
    merci pour votre aide car cela fait un moment que je cherche.
    M.B.

  2. #2
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    Vous pouvez utiliser Tkinter.Text pour cela (affichage = Tkinter.Text / affichage.insert).
    Tkinter.Text supporte le copier/coller clavier mais il ne vous afficheras pas un menu contextuel via le clic droit.
    Une autre solution, et là qu'importe le Widget, vous pouvez faire votre propre menu contextuel en vous inspirant de ceci.

    Ou les deux...

    @+

  3. #3
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 8
    Par défaut
    Bonsoir

    Merci pour votre réponse.
    Mais quand j'utilise la méthode text
    j'ai le message d'erreur suivant:
    TypeError: 'classobj' object does not support item assignment
    De plus je pense que je ne suis mal fait comprendre ce que je souhaiterai c'est afficher une variablede type chaine de caractère dans une zone de saisie afin de pouvoir la copier.

  4. #4
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 8
    Par défaut
    Re bonsoir
    en utilisant insert j'ai bien une zone de saisie par contre mon résultat ne s'affiche pas !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    # -*- coding: cp1252 -*-  # Définition l'encodage des caractères
    import Tkinter  # le programme va aller chercher toutes les fonctions de la librairie Tkinter
     
    # fonction de chiffrement
    def Chiffrement(caractere,clef):
        if caractere+clef>127: # Cas ou le décalage dépasse de la table ascii
            return (caractere+clef-127) 
        else:
            return (caractere+clef) # Réalise le décalage dans la cas non accentuée, retourne un entier
     
     
    def chiffreCesar():
        clef = cle.get()%128 #mise à l'echelle de la clef <128
        MessageInter =[] # Cette variable list contiendra le message en ascii décalé de 65 (code ASCII de A).
        MessageInter = [ord(i) for i in texteclair.get()]
        MessageCode='' # chaîne de caractères qui contiendra le cryptogramme.
     
        # concaténation des caractères de rang i pour obtenir le texte clair
        for i in MessageInter:
            MessageCode = MessageCode+chr(Chiffrement(i,clef))
     
        affichage.insert(Tkinter.END,MessageCode)
        affichage.config(state='disabled')
     
    # ---------------------------------------------------
    # Debut
    # ---------------------------------------------------
     
     
    # création de la fenêtre, avec le nom code césar 
    Fenetre = Tkinter.Tk()
    Fenetre.title('Code César')
    Fenetre.geometry("400x300") # définie la dimension minimale de la fenêtre
    Fenetre.maxsize(1024,768) # taille maximum de la fenetre
     
    #Création des zones de saisie à partir de la classe Label().
    # fenêtre de saisie texte à coder
    saisietexte = Tkinter.Label(Fenetre, text = 'texte à coder:')
    saisietexte.pack() # commande d'affichage du label
    texteclair=Tkinter.StringVar() # variable pour recevoir le texte saisi
    texteclairlu = Tkinter.Entry(textvariable=texteclair, width=50) # saisie du texte
    texteclairlu.pack()
     
    # fenêtre de la sasie de la clé
    saisiecle = Tkinter.Label(Fenetre, text = 'clé ?')
    saisiecle.pack()
    cle=Tkinter.IntVar()
    clelue = Tkinter.Entry(textvariable=cle, width=10)
    clelue.pack()
     
    # création du bouton crypter
    bouton = Tkinter.Button(Fenetre, text =' CRYPTER', command=chiffreCesar)
    bouton.pack()
     
    # gestion affichage texte codé
    textecode = Tkinter.Label(Fenetre, text='Texte codé :')
    textecode.pack()
    affichage = Tkinter.Text(Fenetre, width=30, height = 5, state= 'disabled')
    affichage.pack()
     
     
    Fenetre.mainloop()## lance le gestionnaire d'événements

  5. #5
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 8
    Par défaut
    Re
    j'ai compris mon erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    affichage.config(state='disabled')
    il fallait supprimer cette ligne car cela bloque la saisie et donc l'affichage.

Discussions similaires

  1. Texte affiché par liste deroulante
    Par dynxd dans le forum Access
    Réponses: 20
    Dernier message: 30/09/2005, 21h37
  2. [JTree] Modification dynamique du texte à afficher
    Par jIdJo dans le forum Composants
    Réponses: 2
    Dernier message: 17/06/2005, 16h49
  3. [Taglib] Formatter le texte affiché
    Par lr dans le forum Taglibs
    Réponses: 4
    Dernier message: 21/05/2005, 13h00
  4. Edition zone texte du libelle d'un TREENODE / Evenement Echa
    Par bigbagisbigbag dans le forum C++Builder
    Réponses: 8
    Dernier message: 03/03/2005, 18h25
  5. VB6] imprimer le texte afficher dans une picturebox
    Par Persons dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/08/2004, 11h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo