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 :

Comment afficher le text de type int dans le canvas [Python 3.X]


Sujet :

Tkinter Python

  1. #1
    Membre à l'essai Avatar de mohan
    Homme Profil pro
    mateur en informatique
    Inscrit en
    Juillet 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Cameroun

    Informations professionnelles :
    Activité : mateur en informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2016
    Messages : 30
    Points : 21
    Points
    21
    Par défaut Comment afficher le text de type int dans le canvas
    slt
    je cherche a afficher dans le canvas, un message socket, mais mon problème est que lord de l'affichage du message,
    tout les contenus s'affiche en une ligne.
    est il possible de contenir tout le message dans un dictionnaire puis l'afficher?, probablement possible mais comment faire.
    voila a quoi ressemble le script:
    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
     
    #-*-coding: Utf-8 -*-
     
    ## MODULES IMPORTER ##
    import os, sys, socket
    from tkinter import *
    from tkinter.messagebox import *
     
    class Application(Tk):
        def connection(self, event):
            self.HOST =self.ent.get()
            self.sock =socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            try:                
                self.sock.connect((self.HOST, 19111))
                self.msgServeur_1 =self.sock.recv(1024).decode("Utf8")
                showinfo("Connection",self.msgServeur_1)
                self.lb.configure(text=u"Status: connecter")
            except socket.error:
                if askyesno("Error", u"Error socket. Verifier le host et Relancer?"):
                    self.lb.configure(text=u"Status: non connecter")
                    return self.connection
                else:
                    sys.exit
     
        def chat(self, event):
            """Evenement clavier"""
            msgClient =self.msgClient
            self.sock.send(msgClient.get().encode("Utf8"))
     
            text=self.sock.recv(1024).decode("Utf8")
     
            self.txt =self.can.create_text(75, 18,text=text, font ="Cambria 9", fill ="black")
     
        """Interface graphique"""
        def __init__(self,):
            Tk.__init__(self,)
            self['bg']="green"
            self.title("Client Socket")
            self.iconbitmap('icon.ico')
     
            #Label
            self.lb =Label(self, bg="green", font ="Cambria 11")
            self.lb.pack(padx=1, pady=1)
            #Entry
            self.ent =Entry(self, width =31, selectbackground ="royal blue",font ="Cambria 9")
            self.ent.bind("<Return>", self.connection)
            self.ent.pack(padx =1, pady =1)
     
            #Canvas
            self.can =Canvas(self, width =711, height =311, bg ="red")
            self.can.pack(padx=3, pady =3)
     
            #Entry
            self.msgClient =Entry(self, width =71,selectbackground ="royal blue", font ="Cambria 10")
            self.msgClient.bind("<Return>", self.chat)
            self.msgClient.pack(padx =3, pady =3)  
     
     
    if __name__=='__main__':
        app = Application()
        app.mainloop()
    rendre le valeur str() en Unicode...
    merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Si votre problème est dans l'utilisation de l'item "text" d'un Canvas, votre question serait plus claire en donnant des exemples de texte à afficher et le rendu visuel à obtenir.
    Par exemple, on crée un Canvas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> import tkinter as tk
    >>> w = tk.Canvas()
    >>> w.pack()
    Puis lorsqu'on affiche "abcdef\nghijk":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> w.create_text(10, 10, text="abcdef\nghijk")
    1
    on voudrait voir...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre à l'essai Avatar de mohan
    Homme Profil pro
    mateur en informatique
    Inscrit en
    Juillet 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Cameroun

    Informations professionnelles :
    Activité : mateur en informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2016
    Messages : 30
    Points : 21
    Points
    21
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    def chat(self, event):
            """Evenement clavier"""
            msgClient =self.msgClient
            self.sock.send(msgClient.get().encode("Utf8"))
     
            text=self.sock.recv(1024).decode("Utf8")
     
            self.txt =self.can.create_text(75, 18,text=text, font ="Cambria 9", fill ="black")
    mon probleme est a cet niveau, afficher le message de socket en configure()
    qui complique un peux,
    car le message envoier en comporte de signe tel que "\r", "\n" etc.
    normalement "\n" c'est un saut de ligne, mais alors tout ses detailles sont ignorer.
    le message a afficher est : text=self.sock.recv().decode("")
    le message sort toujours en une ligne, a cause de l'ignorance des signe suivant "\n", "\r".
    de debute avec tkinter
    en gros c'est la mise en forme et le decodage qui m'echape
    merci

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par mohan Voir le message
    car le message envoier en comporte de signe tel que "\r", "\n" etc.
    normalement "\n" c'est un saut de ligne, mais alors tout ses detailles sont ignorer.
    le message a afficher est : text=self.sock.recv().decode("")
    le message sort toujours en une ligne, a cause de l'ignorance des signe suivant "\n", "\r".
    de debute avec tkinter
    en gros c'est la mise en forme et le decodage qui m'echape
    Dans mon post précédent, j'ai pris la peine d'utiliser une chaîne de caractère qui contient des '\n'.
    Il vous suffit d'essayer et voir si çà le fait (ou pas).
    De toutes façons, sans poster le contenu de votre "text" dire que vous l'obtenez via self.sock.recv().decode("") n'apporte pas grand chose.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre à l'essai Avatar de mohan
    Homme Profil pro
    mateur en informatique
    Inscrit en
    Juillet 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Cameroun

    Informations professionnelles :
    Activité : mateur en informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2016
    Messages : 30
    Points : 21
    Points
    21
    Par défaut
    je recherche un peu, et j'ai trouver ceci,
    l'encodage qu'utilise les console, (CMD, Python etc.)
    "mbcs"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    text =self.sock.recv(1024).decode("mbcs")
    un probleme de moins

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

Discussions similaires

  1. [Débutant] comment afficher un text dans une form
    Par frederic_lh dans le forum VB.NET
    Réponses: 2
    Dernier message: 04/03/2010, 20h10
  2. [phpToPDF] Comment afficher du texte dans le fichier pdf généré ?
    Par ginger4957 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 18/05/2009, 11h16
  3. Réponses: 7
    Dernier message: 20/04/2007, 16h42
  4. Réponses: 2
    Dernier message: 16/08/2006, 15h53
  5. Comment afficher du texte dans un JPanel (ex:chat)
    Par remooz dans le forum AWT/Swing
    Réponses: 24
    Dernier message: 05/06/2006, 12h06

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