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 :

Appliquer la méthode configure() sur le Canvas_text [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 Appliquer la méthode configure() sur le Canvas_text
    slt,
    je serais ravis de savoir si on peux appliquer la méthode configure() a un canvas_text() ?
    ou bien existerais de méthode diffamante?
    c'est que je chercher a faire est d'effacer les textes précédente et puis en afficher une autres ainsi de suit.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    from tkinter import *
    #---------------------------------------------------------------------#
    def canvas(self, event):
            self.text =self.txt.configure(text="text") # "text" est un valeur non fixe, en gros c'est mon probleme
            self.can =Canvas(self, width =711, height =311, bg ="light grey")
            self.txt =self.can.create_text(233, 45, font ="Cambria 11", fill ="blue")
            self.can.pack(padx=3, pady =3)
     
    self.ent =Entry(self, width =71,selectbackground ="royal blue", font ="Cambria 10")
    self.ent.bind("<Return>", self.canvas)
    self.entt.pack(padx =3, pady =3)
    c'est que je souhaite est de pouvoire changer self.txt a chaque execution.
    un message error: configure() not interger ... int
    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
    Citation Envoyé par mohan Voir le message
    je serais ravis de savoir si on peux appliquer la méthode configure() a un canvas_text() ?
    ou bien existerais de méthode diffamante?
    c'est que je chercher a faire est d'effacer les textes précédente et puis en afficher une autres ainsi de suit.
    La méthode du Canvas .create_text retourne un entier qui est l'identifiant de l'item du Canvas crée par l'opération.
    Inutile d'essayer de lui appliquer la méthode ".configure"... car ce n'est qu'un entier et non un widget.

    Par contre, on peut modifier un item avec la méthode .itemconfigure (qui est une méthode du Canvas) comme décrit dans toute documentation (à lire avant de faire n'importe quoi et s'étonner que çà ne fonctionne pas).

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

  3. #3
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Et simplement utiliser une méthode pour mettre à jour le texte, puisque tu gardes une référence de ce texte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        def update_text(self, new):
            self.txt.configure(text=new)
    Par contre ton code ne semble pas clair, tu fais self.txt.configure() alors que tu ne définis self.txt que deux lignes plus loin.

  4. #4
    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
    :Oops:
    je deja consulter, la page que vous m'avais proposer.
    itemconfigure c'est pour C.create_line().
    mais cet errer est toujours la
    'int' object has no attribute 'itemconfig'
    mon plus grand défie est d'afficher le texte provenant de cet canal.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.sock.recv(1024).decode("mbcs")
    mais, plus important: vidé le canvas.create_text() pour que le nouveau texte, s'installe,
    le but c'est de se servir comme écran.
    merci.

  5. #5
    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
    :Oops:
    je deja consulter, la page que vous m'avais proposer.
    itemconfigure c'est pour C.create_line().
    Et aussi pour C.create_text... Et tous les objets du Canvas désignés par "items"... Et la documentation ne va pas montrer comment çà fonctionne avec tous les "items", ils fonctionnent pareil. Donc un exemple avec ".create_line" suffit.

    Citation Envoyé par mohan Voir le message
    mais cet errer est toujours la
    'int' object has no attribute 'itemconfig'
    mon plus grand défie est d'afficher le texte provenant de cet canal.
    Vous pourriez utiliser un Label. C'est bien moins compliqué qu'un Canvas.

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

  6. #6
    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
    avec le Label(), si le contenus est de type binaire, je reçoit tous le contenus en une ligne, et ça déformer, mon interface.
    j'ai utiliser un fichier comme font de Canvas() pour parvenir a mes fin, avec ça le saut de lignes, mise en forme son respecter.

    Merci

  7. #7
    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
    avec le Label(), si le contenus est de type binaire, je reçoit tous le contenus en une ligne, et ça déformer, mon interface.
    j'ai utiliser un fichier comme font de Canvas() pour parvenir a mes fin, avec ça le saut de lignes, mise en forme son respecter.
    Relisez la documentation sur Label (celle-ci ou la votre). Elle doit vous raconter que les dimensions du Label s'ajustent au contenu lorsqu'on n'a pas fixé width et height.
    Si vous êtes pas sur que çà fera bien ce que çà dit, lancez la console et testez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> import tkinter as tk
    >>> w = tk.Label(width=5, height=2)
    >>> w.pack()
    >>> w['text'] =  '123456789\n' * 3
    pour voir ce qu'il se passe...
    Si vous lisez une documentation technique sans avoir compris ce qu'elle raconte (i.e. testé que çà fait bien ce que vous pensez avoir compris), non seulement vous allez passer à côté de tas de choses (tester peut vous donner des idées) mais en plus vous allez vous emmurer dans des certitudes qui ne reposent sur rien (la précédente étant "itemconfigure c'est pour C.create_line()").

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

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

Discussions similaires

  1. Impossible d'appliquer une méthode sur un NoneType
    Par Bktero dans le forum Général Python
    Réponses: 3
    Dernier message: 13/08/2012, 16h57
  2. Appliquer une méthode d'Euler en 3D sur une EDP?
    Par Sebsheep dans le forum Mathématiques
    Réponses: 6
    Dernier message: 25/12/2007, 20h56
  3. [XSL]appliquer la fonction substring sur une valeur récupéré
    Par totoranky dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 22/02/2006, 17h21
  4. Réponses: 9
    Dernier message: 16/11/2005, 11h32
  5. Réponses: 5
    Dernier message: 18/09/2004, 21h30

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