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 :

Mettre un texte par défaut dans une zone de texte


Sujet :

Tkinter Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Mettre un texte par défaut dans une zone de texte
    Bonjour,
    Je fais une machine qui code un message. Le message est inscrit dans une première zone de texte (c'est l'utilisateur qui écrit), il clique sur un bouton "Coder", et le message codé s'affiche dans une seconde zone de texte.
    J'aimerais donc savoir comment définir ce qui est écrit dans une zone de texte. En gros est-ce qu'il existe l'équivalent d'un set(), pour qu'il y ait un texte instantanément affiché (qui est en l'occurrence le message codé ici), texte défini par une variable 'message_code'. Quelque chose du genre : TexteCode.set(message_code).

    Je cherche aussi quelque chose pour effacer ce qui est écrit dans une zone de texte (par exemple si on veut coder un second message, alors on supprime le contenu de la seconde zone de texte et on affiche le nouveau message codé)

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 347
    Points : 36 870
    Points
    36 870
    Par défaut
    Salut,

    Si vous postiez un peu de code pour illustrer tout çà, on pourrait peut être savoir avec quel widget vous avez réalisé ou voulez réaliser ce que vous appelez "zone de texte".

    - W

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Si vous postiez un peu de code pour illustrer tout çà, on pourrait peut être savoir avec quel widget vous avez réalisé ou voulez réaliser ce que vous appelez "zone de texte".

    - W
    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
    from tkinter import *
    from random import *
     
     
     
    def fenetre_Codage():
        global fen1, rotor1, rotor2, label2, TexteACoder, TexteCode
        message_code = ""
        rotors_aléatoires()
        fen1.destroy()
        fen2 = Tk()
        fen2.geometry("700x600")
        fen2.title('Codage with Enigma Machine')
        fen2['bg']='grey'
        fen2.focus_set()
        label2 = Canvas(fen2, width = 700, height = 600)
        label2.pack()
        Texte1 = label2.create_text(130, 17, text="Message a coder", font="Locator 20", fill="black")
        TexteACoder = Text(label2, bd=4, bg='white', fg='black', font="Locator 12")
        TexteACoder.place(x=100 , y=50, width=500, height=150)
        bouton_coder_avec_rotation = Button(label2, text="Codage avec Rotation", background='black', foreground='white', font="Locator 10", width='50')
        bouton_coder_avec_rotation.place(x=250 , y=220, width=200, height=20)
        bouton_coder_sans_rotation = Button(label2, text="Codage sans Rotation", background='black', foreground='white', font="Locator 10", width='50', command = code1)
        bouton_coder_sans_rotation.place(x=250 , y=240, width=200, height=20)
        Texte2 = label2.create_text(60, 270, text="Rotors", font="Locator 20", fill="black")
        Alphabet1 = label2.create_text(345, 300, text="A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", font = "Locator 15", fill="red")
        Rotor1 = label2.create_text(345, 320, text=rotor1, font="Locator 15", fill="black")
        Rotor2 = label2.create_text(345, 340, text=rotor2, font="Locator 15", fill="black")
        Alphabet2 = label2.create_text(345, 360, text="A B C D E F G H I J K L M N O P Q R S T U V W X Y Z", font = "Locator 15", fill="red")
        Texte3 = label2.create_text(110, 395, text="Message code", font="Locator 20", fill="black")
        TexteCode = Text(label2, bd=4, bg='white', fg='black', font="Locator 12")
        TexteCode.place(x=100 , y=420, width=500, height=150)
     
     
    def code1() :
        global TexteACoder, TexteCode
        Dechiffrage = TexteACoder.get(1.0, END)
        code2(Dechiffrage, rotor1, rotor2)
     
    def code2(message, rotor1, rotor2) :
        global message_code
        message_code = ""
        for i in range(len(message)) :
            if ord(message[i]) < 65 :
                message_code += message[i]
            else :
                rang1 = ord(message[i]) - 65
                rang2 = ord(rotor1[rang1]) - 65
                message_code += rotor2[rang2]
        return message_code
        #TexteCode.delete()
    En gros on écrit dans TexteACoder le texte que l'on veut coder, on appuie sur le bouton "Coder sans Rotation", code1() récupère ce qui est écrit et code2() le code. Ce que je voudrais c'est supprimer ce qui est dans TexteCode (qui est certes initialement une zone de texte vide) et écrire à la place message_code (le résultat de code2()).

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 347
    Points : 36 870
    Points
    36 870
    Par défaut
    Salut,

    Citation Envoyé par Waassup Voir le message
    Ce que je voudrais c'est supprimer ce qui est dans TexteCode (qui est certes initialement une zone de texte vide) et écrire à la place message_code (le résultat de code2()).
    Votre code est difficile à lire.
    Sa lecture en diagonale montre que tout le texte est affiché via .create_text.
    C'est une méthode du widget Canvas qui crée des items de type Text.
    Donc pour supprimer l'item ou remplacer le texte qu'il contient, c'est dans la documentation du widget Canvas que çà se passe.
    note: plutôt que de foncer tête baisser à coder avec ce qui vous tombe sous la main, posez le crayon et réfléchissez à comment modifier l'item text d'un Canvas. Cela vous permettra d'écrire un exemple en quelques lignes et décrire l'opération que vous voulez faire non pas fonction du programme que vous voulez réaliser mais en fonction du widget.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import tkinter as tk
     
    root = tk.Tk()
    canvas = tk.Canvas(root)
    canvas.pack()
     
    n = 0
    text = canvas.create_text(0, 0, text='count: %d' % n, anchor='nw')
    def do_update(*e):
        global n
        n += 1
        canvas.itemconfig(text, text='count: %d' % n)
    root.bind('<1>', do_update)
    tk.mainloop()
    - W

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Je ne comprends pas bien pourquoi vous me redirigez vers la méthode create_text alors que j'aimerais afficher du texte dans un widget TEXT, widget dans lequel la méthode create_text ne fonctionne pas.
    Tout ce que je veux c'est afficher du texte dans un widget TEXT, sans que ce soit l'utilisateur qui écrive dans le widget bien sûr.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 347
    Points : 36 870
    Points
    36 870
    Par défaut
    Citation Envoyé par Waassup Voir le message
    Je ne comprends pas bien pourquoi vous me redirigez vers la méthode create_text.
    C'est pas moi qui ait écrit:
    Ce que je voudrais c'est supprimer ce qui est dans TexteCode (qui est certes initialement une zone de texte vide) et écrire à la place message_code (le résultat de code2()).
    Or pour supprimer, il faut déjà créer et il n'y a que des .create_text...

    Citation Envoyé par Waassup Voir le message
    alors que j'aimerais afficher du texte dans un widget TEXT, widget dans lequel la méthode create_text ne fonctionne pas.
    Que ce soit avec le widget Canvas ou avec le widget Text, c'est pareil: vous ouvrez la documentation et vous écrivez un petit exemple de ce que vous voulez faire (en ayant cherché un peu sur Internet) du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import tkinter as tk
     
    root = tk.Tk()
     
    n = 0
    text = tk.Text()
    text.pack()
     
    def do_update(*e):
        global n
        n += 1
        text.insert('end', 'count: %d' % n + '\n')
    tk.Button(text='update', command=do_update).pack()
    tk.mainloop()

    - W

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Janvier 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Bon, j'ai trouvé les solutions :
    ZoneDeTexte.delete(1.0, END) (pour supprimer ce qui écrit dans la zone de texte)
    ZoneDeTexte.insert(1.0, variable_contenant_texte) (pour écrire quelque chose contenu dans une variable)

    Je vous remercie.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 10/01/2012, 21h40
  2. Valeur par défaut d'une zone de texte
    Par yveslens dans le forum Langage
    Réponses: 3
    Dernier message: 01/04/2008, 09h41
  3. Valeur par défaut dans une zone de texte
    Par juliojc13 dans le forum VBA Access
    Réponses: 18
    Dernier message: 01/06/2007, 14h01
  4. valeur par défaut d'une zone de texte
    Par remi59 dans le forum IHM
    Réponses: 2
    Dernier message: 08/02/2007, 12h01
  5. Sélection valeur par défaut dans une zone de liste
    Par Cécile154 dans le forum IHM
    Réponses: 2
    Dernier message: 15/02/2005, 18h20

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