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 :

Comportement sur un Label


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Electricien
    Inscrit en
    Mars 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Electricien

    Informations forums :
    Inscription : Mars 2020
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Comportement sur un Label
    Bonjour,

    Je débute tout juste en Python, j'ai une base de programmation en PHP, MYSQL, HTML, JavaScript et CSS qui date de plus de 10 ans ^_^ je pensé que ce serai pas trop difficile de s'y mettre mais j'avoue que là je patauge un peu...
    J'essaye de créer ma première application, le but pour commencer est de créer un tableau graphique sur x colonnes et y lignes avec entête qui sera rempli par une requête MYSQL dont voici le code (j'ai mis les données en Array pour l'exemple)

    Je voulais dans cet exemple récupérer l'id MYSQL de la 1er colonne pour ensuite pouvoir appeler un widget pour afficher et modifier les données

    Dans le 1er code "data[j - 2][champ[0]]" dans "textvariable" est l'id du client
    mais mon tableau se remplit avec les données de "textvariable" et non plus avec les données "text"
    alors que dans le 2ème code mon tableau se remplit bien avec les données clients et l'id du client m'est bien renvoyer pour chaque ligne
    Je ne comprend pas se comportement, si vous pouviez m'expliquer pourquoi

    1er 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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    from tkinter import *
     
    data = [{
        "id": "010101",
        "nom": "Dupont1",
        "prenom": "Martin1",
        "adresse": "16 rue de rivoli",
        "tel": "06.00.00.00.00",
        "mail": "truc1@gmail.com",
        "contact": "Robert1",
        "nb_fac": "16",
        "nb_devis": "32",
        "nb_avoirs": "64"
        },
        {
        "id": "020202",
        "nom": "Dupont2",
        "prenom": "Martin2",
        "adresse": "16 rue de rivoli",
        "tel": "06.00.00.00.00",
        "mail": "truc2@gmail.com",
        "contact": "Robert2",
        "nb_fac": "16",
        "nb_devis": "32",
        "nb_avoirs": "64"
        },
        {
        "id": "030303",
        "nom": "Dupont3",
        "prenom": "Martin3",
        "adresse": "16 rue de rivoli",
        "tel": "06.00.00.00.00",
        "mail": "truc3@gmail.com",
        "contact": "Robert3",
        "nb_fac": "16",
        "nb_devis": "32",
        "nb_avoirs": "64"
        },
        {
        "id": "040404",
        "nom": "Dupont4",
        "prenom": "Martin4",
        "adresse": "16 rue de rivoli",
        "tel": "06.00.00.00.00",
        "mail": "truc4@gmail.com",
        "contact": "Robert4",
        "nb_fac": "16",
        "nb_devis": "32",
        "nb_avoirs": "64"
        }
    ]
    entete = ["Id", "Nom", "Prénom", "Adresse", "Téléphone", "Mail", "Contact", "Nb Factures", "Nb Devis", "Nb Avoirs"]
    champ = ["id", "nom", "prenom", "adresse", "tel", "mail", "contact", "nb_fac", "nb_devis", "nb_avoirs"]
     
    ######################################################################
     
     
    def do_click(label_clients):
        print(label_clients['textvariable'])
     
     
    def on_click(e):
        if isinstance(e.widget, Label):
            do_click(e.widget)
     
     
    root = Tk()
    frame = Frame(root, name='labels')
    frame.pack()
     
    for i in range(0, len(entete)):
        for j in range(2, len(data) + 2):
            color = ['grey85', 'white'][j % 2]
            label_clients = Label(frame, text="%s" % (data[j - 2][champ[i]][:50]), textvariable=data[j - 2][champ[0]],
                                  bg=color, bd=1, relief=RAISED, width=20, anchor='w', font="arial, 9")
            label_clients.grid(row=j, column=i, ipadx=3, ipady=3)
     
    root.bind('<1>', on_click)
     
    mainloop()
    2ème 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
     
    from tkinter import *
     
     
    def do_click(label_clients):
        print(label_clients['textvariable'])
     
     
    def on_click(e):
        if isinstance(e.widget, Label):
            do_click(e.widget)
     
     
    root = Tk()
    frame = Frame(root, name='labels')
    frame.pack()
     
    for x in range(2):
        for y in range(5):
            color = ['grey85', 'white'][y % 2]
            label_clients = Label(frame, text='Contenu_%dx%d' % (x, y), textvariable='id_%dx%d' % (x, y), bg=color, bd=1,
                                  relief=RAISED, width=20, anchor='w', font="arial, 9")
            label_clients.grid(row=y, column=x, ipadx=3, ipady=3)
     
    root.bind('<1>', on_click)
     
    mainloop()
    Je vous remercie par avance pour votre aide

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

    Citation Envoyé par KorbenDallas59 Voir le message
    Je ne comprend pas se comportement, si vous pouviez m'expliquer pourquoi
    textvariable doit être une variable TCL accessible depuis un objet de type StringVar, IntVar, ...

    Si vous y collez autre chose, çà ne marchera pas et ici ok, çà fait n'importe quoi.
    Mais utilisé correctement çà ne fera pas ce que vous vouliez i.e. (à priori) un attribut magique dans lequel on pourrait stocker je ne sais quoi.

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

  3. #3
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2020
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2020
    Messages : 20
    Points : 24
    Points
    24
    Par défaut
    pour compléter, on définit une variable tkinter comme StringVar (mais pas de liste possible)
    et on lui assigne une valeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var1 = StringVar()
    var1.set(data[1])
    si data[1] est bien une chaine

Discussions similaires

  1. petite question sur les "label"
    Par newixz dans le forum Delphi
    Réponses: 5
    Dernier message: 09/09/2006, 12h04
  2. Réponses: 2
    Dernier message: 07/08/2006, 21h21
  3. [C# 2.0] Pb sur un Label ! :)
    Par hobotalker dans le forum Windows Forms
    Réponses: 2
    Dernier message: 23/05/2006, 10h10
  4. Index sur un label
    Par matech dans le forum Composants VCL
    Réponses: 2
    Dernier message: 22/03/2006, 18h50
  5. [Debutant]Transparence sur un Label ou GroupBox
    Par ghan77 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 15/12/2005, 16h53

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