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 :

Eviter les répétitions grâce à la boucle for


Sujet :

Tkinter Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Juin 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juin 2017
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Eviter les répétitions grâce à la boucle for
    Deux problèmes en un je sais pas si j'ai le droit ^^

    Bon, alors mon premier problème est le fait que j'en ai marre de répéter plusieurs fois la même chose. Alor je 'tricote' un truc vite fait qui marche plus ou moins. Mais du coup si quelqu'un a une véritable méthode (ou un lien me permettant d'en apprendre plus) je suis preneur!

    Mon deuxieme probleme est le fait que j'essaie de placer un bouton avec .place(), je mets deux arguments (x, y) et la message d'erreur: "place_configure() takes from 1 to 2 positional arguments but 3 were given"


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def createMap(self):
            self.l = ['self.b1', 'self.b2', 'self.b3', 'self.b4', 'self.b5', 'self.b6', 'self.b7',
                      'self.b8', 'self.b9', 'self.b10', 'self.b11', 'self.b12', 'self.b13', 'self.b14',
                      'self.b15', 'self.b16']       
            x = y = 0
            for x in range(16):
                self.l[x] = Button(main, text='', width=150, height=150)     
                self.l[x].place(x, y)
                x += 150
                if x == 600:
                    y += 150
    Des idées, des solutions? si je n'est pas été suffisamment clair sur un point dites le moi!

  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,

    Quel est l'intérêt de créer une liste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            self.l = ['self.b1', 'self.b2', 'self.b3', 'self.b4', 'self.b5', 'self.b6', 'self.b7',
                      'self.b8', 'self.b9', 'self.b10', 'self.b11', 'self.b12', 'self.b13', 'self.b14',
                      'self.b15', 'self.b16']
    Si c'est pour remplacer ensuite chaque chaîne de caractère par un "Button"?
    Vous pourriez créer une liste vide et lui ajouter les Button au fur et à mesure.

    Un autre truc strange est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            x = y = 0
            for x in range(16):
                ...
                x += 150
                if x == 600:
                    y += 150
    Vous avez un x qui varie entre 0 et 15 auquel vous ajoutez 150 à l'intérieur de la boucle qui du coup ne vaudra jamais 600...
    Mon deuxieme probleme est le fait que j'essaie de placer un bouton avec .place(), je mets deux arguments (x, y) et la message d'erreur: "place_configure() takes from 1 to 2 positional arguments but 3 were given"
    Avec Python une fonction admet des paramètres positionnels et des paramètres nommés:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> def f(a, b, *, d=3, e=5): print(a, b,d,e)
    ...
    >>> f(1,2,3,4)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: f() takes 2 positional arguments but 4 were given
    >>> f(1,2,d=5)
    1 2 5 5
    >>>
    après '*' il faut préciser de quoi on parle...
    Pour .place, c'est pareil: .place(x=x, y=y) devrait être correct côté syntaxe (mais il faut lire la documentation pour connaître les différentes options).

    - 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. Stocker les résultats d'une boucle for
    Par ju_cayenne dans le forum R
    Réponses: 1
    Dernier message: 23/03/2016, 15h49
  2. Réponses: 7
    Dernier message: 24/07/2015, 11h38
  3. Réponses: 2
    Dernier message: 10/10/2014, 17h02
  4. initialiser les vertex dans une boucle for
    Par StrikerFred dans le forum DirectX
    Réponses: 10
    Dernier message: 26/09/2006, 10h36
  5. [C#] Comment eviter les boucles infinies ?
    Par Thomas Lebrun dans le forum C#
    Réponses: 12
    Dernier message: 09/06/2004, 00h04

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