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 :

Rafraichir le label


Sujet :

Tkinter Python

  1. #1
    Membre confirm�

    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activit� : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 94
    Par d�faut Rafraichir le label
    Bonjour.

    Je souhaiterais que lorsque je d�place le pointeur de la souris sur un canevas, sa position soit affich�e, mais que la position pr�c�dente soit effac�e... sinon, je me retrouve avec plein de nombres sur le canevas.

    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
    from tkinter import *
     
    def position(event):
        x,y= event.x,event.y
        print('{}'.format(x))
        E=Label(canvas,text=event.x,font='ArialBlack 10',width=0,bg='#ff0000')
        E.place(x=event.x-20,y=event.y-20)
     
    fenetre=Tk()
    fenetre.geometry('1000x800')
     
    canvas=Canvas(fenetre,width='200',height='200',bg='#ff0000',bd=1)
    canvas.place(x = 50,y = 50)
    canvas.bind('<Motion>', position)
     
    fenetre.mainloop()
    J'ai essay� ainsi, mais �a ne change rien :

    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
    from tkinter import *
     
    def position(event):
        var1=StringVar()
        x,y= event.x,event.y
        print('{}'.format(x),var1)
        E=Label(canvas,textvariable=var1,font='ArialBlack 10',width=0,bg='#ff0000')
        E.place(x=event.x-20,y=event.y-20)
        var1.set(event.x)
     
     
    fenetre=Tk()
    fenetre.geometry('1000x800')
     
    canvas=Canvas(fenetre,width='200',height='200',bg='#ff0000',bd=1)
    canvas.place(x = 50,y = 50)
    canvas.bind('<Motion>', position)
     
    fenetre.mainloop()
    D'avance merci.

  2. #2
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 770
    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 770
    Par d�faut
    Salut,

    Relisez votre code:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    def position(event):
        x,y= event.x,event.y
        print('{}'.format(x))
        E=Label(canvas,text=event.x,font='ArialBlack 10',width=0,bg='#ff0000')
        E.place(x=event.x-20,y=event.y-20)
    A chaque appel � position, vous cr�ez un nouveau Label et donc plein de nombres...
    Soit vous d�truisez le pr�c�dent, soit vous mettez � jour et d�placez un seul Label...

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

  3. #3
    Membre confirm�

    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activit� : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 94
    Par d�faut
    Bonjour et merci de votre r�ponse.

    Un E.update() fait qu'il n'y a plus rien d'afficher dans le canevas, un E.destroy() aussi.
    Une boucle ?

    Merci.

  4. #4
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 770
    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 770
    Par d�faut
    Salut,

    Citation Envoy� par Aiacciu Voir le message
    Une boucle ?
    D'abord vous devez choisir entre:
    1. un Label unique mis � jour et d�plac�,
    2. un Label d�truit et recr�e,
    3. l'item text du Canvas.

    apr�s vous devez essayer d'�crire le code qui....
    En cas de difficult�s, vous postez le code que vous avez essay� et ce que vous avez compris de ce qu'il se passe.

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

  5. #5
    Membre confirm�

    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activit� : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 94
    Par d�faut
    Re-bonjour.

    J'en suis l� :
    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
    from tkinter import *
    from math import*
     
     
    def position(event):
        x= event.x
        canvas.create_text(x-20,20,text=x)
     
    fenetre=Tk()
     
    fenetre.geometry('1000x800')
     
    canvas=Canvas(fenetre,width='200',height='200',bg='#ff0000',bd=1)
    canvas.place(x = 50,y = 50)
     
    canvas.bind('<Motion>', position)
     
    fenetre.mainloop()
    Je n'ai en rien progress� malgr� l'aide que vous tentez de m'apporter, je ne vois pas du tout... d�sol�. Je ne vois pas comment changer le texte � chaque d�placement.
    Je suis 'trop pas bon'...

  6. #6
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 770
    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 770
    Par d�faut
    Salut,

    Citation Envoy� par Aiacciu Voir le message
    Je n'ai en rien progress� malgr� l'aide que vous tentez de m'apporter, je ne vois pas du tout... d�sol�. Je ne vois pas comment changer le texte � chaque d�placement.
    Excusez moi mais vous ne pouvez pas "inventer" juste essayer d'apprendre.... et pour �� vous avez des tutos. qui vont vous fournir explications et exemples que vous pourrez r�utiliser au besoin. Et vous avez m�me un exemple semblable dans le Swinnen.

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

  7. #7
    Membre confirm�

    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activit� : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 94
    Par d�faut
    Bonsoir.

    Oui, je suis en plein apprentissage... seulement deux semaines que je suis dans Python.

    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
    from tkinter import *
     
    def position(event):
     chaine.configure(text = str(event.x),bg='#000000',fg='#ffffff')
     chaine.place(x=str(event.x-10),y=50)
     
    fen = Tk()
    fen.geometry('1000x800')
    canevas = Canvas(fen, width =200, height =150, bg="#000000")
    canevas.place(x = 50,y = 50)
    canevas.bind("<Motion>", position)
    canevas.create_line(0,130,200,130,fill='#ffffff')
     
    for i in range(4):
        canevas.create_line(50*i,130,50*i,120,fill='#ffffff')
     
    chaine = Label(canevas)
     
    fen.mainloop()
    Je n'ai plus qu'� cr�er mon trait qui se d�place � la bonne abscisse pour suivre le Label.
    La r�ponse �tait dans votre premier message.
    Un grand merci � votre aide.
    Bonne soir�e.

  8. #8
    Membre confirm�

    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activit� : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 94
    Par d�faut
    Bonjour.

    Me revoil�, j'ai compris qu'� la ligne 17 : chaine=Label(canevas), je modifie le Label du canevas en fonction de la fonction d�finie avant. Cette "chaine" est la chaine de caract�res qu'il faut pour d�finir un Label.

    Mais si je veux mettre un canevas.create_line... ce "canevas_create_line" doit contenir diff�rents arguments : les coordonn�es des deux points et la couleur du trait.

    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
    from tkinter import *
     
    def position(event):
        global x1
        x1=event.x
        chaine.configure(text = str(event.x),bg='#000000',fg='#ffffff')    # spécificités de la chaine de caractère dans le label du canevas (text = position,bg,fg)
        chaine.place(x=str(event.x-10),y=50)                              # position de cette chaine
     
        canevas.coords(line1,x1,115,x1,45)
     
     
     
    fen = Tk()
     
    fen.geometry('1000x800')
    canevas = Canvas(fen, width =200, height =150, bg="#000000")
    canevas.place(x = 50,y = 50)
    canevas.bind("<Motion>", position)
    chaine = Label(canevas)                                              #label du canevas ICI, la chaine se résume en l'abscisse x
     
    canevas.create_line(0,130,200,130,fill='#ffffff')
    for i in range(4):
        canevas.create_line(50*i,130,50*i,120,fill='#ffffff')
     
    line1=canevas.create_line(x1,115,x1,45,fill='#ffffff')
     
     
    fen.mainloop()
    Et l�, NameError: name 'x1' is not defined...
    Je retourne chercher.

  9. #9
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 770
    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 770
    Par d�faut
    Salut,

    Citation Envoy� par Aiacciu Voir le message
    j'ai compris qu'� la ligne 17 : chaine=Label(canevas), je modifie le Label du canevas en fonction de la fonction d�finie avant. Cette "chaine" est la chaine de caract�res qu'il faut pour d�finir un Label.
    Techniquement, � la ligne 17 est cr�e une instance de Label que vous associez � une variable globale "chaine"... qui sera utilis�e par la fonction.

    Citation Envoy� par Aiacciu Voir le message
    Et l�, NameError: name 'x1' is not defined...
    Avec Python, une variable n'existe qu'apr�s qu'on lui ait assign� (avec le signe '=') un objet.
    Si cela n'est pas encore assimil�, vous allez patauger grave en voulant programmer tkinter... � vous de prendre le temps d'ouvrir un tuto. et d'apprendre les bases.

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

  10. #10
    Membre confirm�

    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activit� : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 94
    Par d�faut
    Ouf ! Il fallait initialiser x1.

    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
    from tkinter import *
    from math import*
     
    def position(event):
     
        x1=event.x
        #chaine.configure(text = str(event.x),bg='#000000',fg='#ffffff')    # spécificités de la chaine de caractère dans le label du canevas (text = position,bg,fg)
        #chaine.place(x=str(event.x-10),y=50)                              # position de cette chaine (x = abs, y=ord)
        canevas.coords(line1,x1,130,x1,50)
        canevas.coords(line2,x1,0,x1,40)
        canevas.coords(Text1,x1,45)
     
     
     
    fen = Tk()
    fen.geometry('1000x800')
    x1=0
    canevas = Canvas(fen, width =200, height =150, bg="#000000")
    canevas.place(x = 50,y = 50)
    canevas.bind("<Motion>", position)
    #chaine = Label(canevas)                                              #label du canevas ICI, la chaine se résume en l'abscisse x
     
    canevas.create_line(0,130,200,130,fill='#ffffff')
    for i in range(4):
        canevas.create_line(50*i,130,50*i,120,fill='#ffffff')
     
    line1=canevas.create_line(x1,130,x1,50,fill='#ffffff')
    line2=canevas.create_line(x1,0,x1,40,fill='#ffffff')
    Text1=canevas.create_text(x1,45,fill='#ffffff')
    fen.mainloop()
    L�, j'essaie de mettre du texte dans le canevas pile entre les deux traits, plut�t que le label du canevas... mais il n'appara�t pas.

  11. #11
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 770
    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 770
    Par d�faut
    Citation Envoy� par Aiacciu Voir le message
    L�, j'essaie de mettre du texte dans le canevas pile entre les deux traits, plut�t que le label du canevas... mais il n'appara�t pas.
    S'il n'y a pas de texte, il n'y a rien � afficher et la documentation du Canvas, il faut aussi la lire.

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

  12. #12
    Membre confirm�

    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activit� : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 94
    Par d�faut
    Bonjour.

    Effectivement, j'ai oubli� de lui pr�ciser le texte (pas r�veill�?)...il n'y a pas de texte dans Text1, donc rien � afficher.
    Quand je mets text='bonjour', il s'affiche bien le mot "bonjour" l� o� je le souhaite.
    Il faut maintenant que ce text soit variable et prenne corresponde � la cha�ne de caract�re souhait�e.
    Le x1 pour les lignes varie : les lignes se d�placent.
    Si je mets text=str(x1), le 0 de l'initialisation appara�t, mais ne se modifie pas... �trange... la valeur de x1 varie mais pas la cha�ne de caract�res.

    Oui, je patauge, oui je pataugerai encore... mais je me dois d'�tre pers�v�rant.
    Un grand MERCI pour votre aide et votre soutien.

    Bonne soir�e.

  13. #13
    Expert �minent
    Homme Profil pro
    Architecte technique retrait�
    Inscrit en
    Juin 2008
    Messages
    21 770
    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 770
    Par d�faut
    Citation Envoy� par Aiacciu Voir le message
    Le x1 pour les lignes varie : les lignes se d�placent.
    Si je mets text=str(x1), le 0 de l'initialisation appara�t, mais ne se modifie pas... �trange... la valeur de x1 varie mais pas la cha�ne de caract�res.
    Sans code, impossible de savoir comment votre cr�ativit� a bien pu produire cela...

    Oui, je patauge, oui je pataugerai encore... mais je me dois d'�tre pers�v�rant.
    Un grand MERCI pour votre aide et votre soutien.
    patauger, �� fatigue...
    Le plus difficile dans un apprentissage est de trouver son chemin.
    En chinois, �� s'appelle le Tao. Un des principes est le wuwei: le non agir... que j'applique sans mod�ration en vous sugg�rant d'ouvrir votre tuto. au chapitre qui parlent de fonctions et de port�e des variables. Dans le Swinnen, �� se passe ici.

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

  14. #14
    Membre confirm�

    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    94
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activit� : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2007
    Messages : 94
    Par d�faut
    Ni hao !
    Voil�, mon ami Kim Tang et sa compagne Thuy m'ont simplement parl� d'un certain "itemconfig", m'ont dit de me d�brouiller avec cette simple indication (ils ne voulaient pas m'en dire plus) en m'ouvrant grand leur porte qui donne sur le D�sert de Gobi (je n'�tais pas tr�s rassur� � ce moment, mais toujours plein de courage).
    Nous avons pass� une tr�s bonne soir�e. Thuy cuisine tr�s bien le Shuang jiao tou.
    Kim m'a offert un dernier baijiu pour me donner du courage, j'ai titub� toute la nuit au milieu des dunes (il est fort son baijiu!).
    Une fois rentr�, j'ai �t� �bloui par les longueurs d'onde �mises par la lumi�re de son "itemconfig" l�ch� sur le pas de la porte.

    Ca a donn� �a :

    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
    def position(event):
     
        x1=event.x
        canevas.coords(line1,x1,130,x1,70)
        canevas.coords(line2,x1,0,x1,40)
        canevas.coords(texte1,x1,55)
        canevas.itemconfig(texte1,text=str(x1))
     
    fen = Tk()
    fen.geometry('1000x800')
     
    canevas = Canvas(fen, width =200, height =150, bg="#000000")
    canevas.place(x = 50,y = 50)
    canevas.bind("<Motion>", position)
     
     
    canevas.create_line(0,130,200,130,fill='#ffffff')
    for i in range(4):
        canevas.create_line(50*i,130,50*i,120,fill='#ffffff')
     
    line1=canevas.create_line(0,0,0,0,fill='#ffffff')
    line2=canevas.create_line(0,0,0,0,fill='#ffffff')
    texte1=canevas.create_text(-20,-20,fill='#ffffff')
     
    fen.mainloop()
    Je n'ai plus qu'� l'introduire et � l'ajuster � chacun des 118 spectres des �l�ments de Mendele�ev que j'ai cr��s la semaine derni�re.
    Le souci sera d�sormais de r�ussir � d�tecter la position de chacune des cases dispos�es dans une grande fen�tre.


    Nom : Sans titre.jpg
Affichages : 1404
Taille : 133,1 Ko

    Sinc�rement, encore Xi�xi� � vous et Wanshang hao.

    PS : fatigu� de patauger, un dernier baijiu pour me remettre.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Rafraichir un label sous wxpython
    Par Venom3Y dans le forum wxPython
    R�ponses: 4
    Dernier message: 19/06/2009, 16h29
  2. rafraichir un label
    Par yorukaze dans le forum Tkinter
    R�ponses: 3
    Dernier message: 02/10/2008, 13h14
  3. Pb rafraichir un label
    Par lamoufle dans le forum Flex
    R�ponses: 13
    Dernier message: 04/08/2008, 16h54
  4. R�ponses: 2
    Dernier message: 12/06/2008, 16h15
  5. Rafraichir un label en fonction du travail d'une fonction
    Par blasme dans le forum Windows Forms
    R�ponses: 1
    Dernier message: 06/02/2008, 12h11

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