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 :

Incrémenter le padx


Sujet :

Tkinter Python

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Points : 273
    Points
    273
    Par défaut Incrémenter le padx
    Bonjour,

    sauriez-vous, svp, comment incrémenter le padx de mes boutons à chaque fois qu'on clique sur l'un d'entre eux. Merci d'avance de votre réponse.

    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
    from tkinter import *
    root=Tk()
    Buts={}
     
    def callback() :    
        for r in range(1):
           for c in range(10):           
               Buts[(r,c)].config(padx=10) # je voudrais faire padx+= 1 ou padx=padx+1
     
    for r in range(1):
        for c in range(10):
            Buts[(r,c)]=Button(root,text='%s/%s'%(r,c),borderwidth=10, command=callback)
            Buts[r,c].grid(row=r,column=c)
     
    root.mainloop()
    J'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myPadx = int(Buts[0,0].cget("padx"))+1
    ça me répond :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    line 7, in callback
        myPadx = int(Buts[0,0].cget("padx"))+1
    TypeError: int() argument must be a string, a bytes-like object or a number, not '_tkinter.Tcl_Obj'

  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 778
    Points
    36 778
    Par défaut
    Salut,

    En supposant que vous avez eu la curiosité de faire un "print" de ce que retourne button.cget('padx'), vous avez sans doute constaté que çà affiche une valeur qui ressemble à un padx alors que int(...) râle de recevoir un _tkinter.Tcl_Obj.

    La différence est que "print" affiche ce que retourne la méthodes __str__ (ou __repr__) appliquée à l'objet: çà va toujours afficher quelque chose sans planter.
    "int" est bien plus exigeant sur ce qu'on lui donne à manger.

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

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Points : 273
    Points
    273
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    En supposant que vous avez eu la curiosité de faire un "print" de ce que retourne button.cget('padx'), vous avez sans doute constaté que çà affiche une valeur qui ressemble à un padx alors que int(...) râle de recevoir un _tkinter.Tcl_Obj.

    La différence est que "print" affiche ce que retourne la méthodes __str__ (ou __repr__) appliquée à l'objet: çà va toujours afficher quelque chose sans planter.
    "int" est bien plus exigeant sur ce qu'on lui donne à manger.

    - W
    J'avais bien sûr fait un print :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        myPadx = Buts[0,0].cget("padx")
        print(myPadx)
        myPadx2=int(myPadx)
        print(myPadx2)   
        somme=myPadx +1
        print(somme)
    Avec int() ou sans int(), quand j'aditionne, j'obtiens toujours :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TypeError: unsupported operand type(s) for +: '_tkinter.Tcl_Obj' and 'int'

    Bien que myPadx = Buts[0,0].cget("padx") renvoie un nombre, il est impossible de le récupérer et de lui ajouter un autre nombre. Auriez-vous une solution à ce problème svp? C'est étonnant de pas pouvoir obtenir la valeur du padx dans ce langage.

  4. #4
    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 778
    Points
    36 778
    Par défaut
    Citation Envoyé par Arsene12 Voir le message
    Auriez-vous une solution à ce problème svp? C'est étonnant de pas pouvoir obtenir la valeur du padx dans ce langage.
    Dans une discussion récente, vous étiez parti à jouer avec "name" et aviez des difficultés pour récupérer le "name" de vos widgets. Je vous avais suggéré de passer par "str".
    Le réflexe qu'on a lorsqu'on apprend serait d'ouvrir la documentation pour regarder ce que c'est et comprendre comment s'en sortir au regard de ce que je vous ai raconté.
    Mais comme vous êtes juste pressé de retourner patauger dans votre code....

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

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    926
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 926
    Points : 273
    Points
    273
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Dans une discussion récente, vous étiez parti à jouer avec "name" et aviez des difficultés pour récupérer le "name" de vos widgets. Je vous avais suggéré de passer par "str".
    Le réflexe qu'on a lorsqu'on apprend serait d'ouvrir la documentation pour regarder ce que c'est et comprendre comment s'en sortir au regard de ce que je vous ai raconté.
    Mais comme vous êtes juste pressé de retourner patauger dans votre code....

    - W
    Excusez-moi pour ma lenteur à comprendre. Si vous m'aviez pas fait cette remarque sur str(), je chercherais encore.

    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 *
    root=Tk()
    Buts={}
     
    def callback() :   
     
        myPadx = str(Buts[0,0].cget("padx"))
        myPadx2=int(myPadx)+1
     
        for r in range(1):
           for c in range(10):           
               Buts[(r,c)].config(padx=myPadx2)
     
    for r in range(1):
        for c in range(10):
            Buts[(r,c)]=Button(root,text='%s/%s'%(r,c),borderwidth=10, command=callback)
            Buts[r,c].grid(row=r,column=c)
     
    root.mainloop()
    Merci beaucoup.

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

Discussions similaires

  1. [CODE] auto incrémentation ?
    Par Roi dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 25/09/2003, 15h09
  2. Incrémentation d'un champ de la table
    Par viny dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/09/2003, 20h33
  3. [débutant][xsl]incrémenter une variable
    Par guitalca dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 01/04/2003, 15h19
  4. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10
  5. Post incrémentation?
    Par Defrag dans le forum C
    Réponses: 4
    Dernier message: 08/10/2002, 10h36

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