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 :

crée plusieur widgets et les positionner


Sujet :

Tkinter Python

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut crée plusieur widgets et les positionner
    Bonjour,

    Je voudrais savoir comment crée plusieurs frame et label , avec un boucle "for" ca m'en crée qu'un .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    fenetre = Tk()
     
    for i in range(0,4):
        tache = Frame(niveau,borderwidth=10,relief=FLAT,bg='Brown')
        tache.pack(padx=0,pady=10)
     
        nom = Frame(tache,borderwidth=10,relief=GROOVE,bg='red')
        nom.pack(side="bottom")
     
       fenetre.mainloop()
    et je voudrais savoir comment positionner un widgets plus précisément que top,left,... .

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par pitchu Voir le message
    Bonjour,

    Je voudrais savoir comment crée plusieurs frame et label , avec un boucle "for" ca m'en crée qu'un .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    fenetre = Tk()
     
    for i in range(0,4):
        tache = Frame(niveau,borderwidth=10,relief=FLAT,bg='Brown')
        tache.pack(padx=0,pady=10)
     
        nom = Frame(tache,borderwidth=10,relief=GROOVE,bg='red')
        nom.pack(side="bottom")
     
       fenetre.mainloop()
    et je voudrais savoir comment positionner un widgets plus précisément que top,left,... .
    Bonjour,

    Tel que publié actuellement, votre code ne nous dit pas que sont les variables niveau et tache ?

    Que voulez-vous faire ?

    Réponse A : vous voulez créer plusieurs frames imbriquées les unes dans les autres avec une boucle for ... in ...

    Réponse B : vous voulez créer plusieurs labels dans une même frame grâce à une boucle for ... in ...

    Réponse C : vous voulez imbriquer plusieurs frames les unes dans les autres ET créer plusieurs labels dans chacune de ces frames grâce à une boucle for ... in ...

    Si vous voulez que l'on vous aide vraiment, peut-être serait-il plus pertinent de publier le code qui pose problème au complet ?

    @+.

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut
    bonjour,

    J'ai réussi à crée plusieurs widgets mais il y en a un qui est écrasé ou sort de la fenêtre comment pourrais-je adapter leurs tailles pour que tous les widgets soient affiché ?

    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
     
     
    fenetre = Tk()
     
     
     
    niveau = Frame(fenetre,borderwidth=5,relief=FLAT,bg='Brown')
    niveau.pack(padx=0,pady=10)
     
     
    for i in range(0,10):
     
    #-------------------------------------------------------------------------
        tache = Frame(niveau,borderwidth=10,relief=FLAT,bg='yellow')
        tache.pack(padx=0,pady=10)
     
     
        nom = Frame(tache,borderwidth=5,relief=GROOVE,bg='red')
        nom.pack(side="bottom",padx=10)
     
        tot = Frame(tache,borderwidth=5,relief=GROOVE,bg='black')
        tot.pack(side="left")
     
        tard = Frame(tache,borderwidth=5,relief=GROOVE,bg='violet')
        tard.pack(side="right")
     
     
        Label(nom,text="aaaaaa",bg='green').pack(padx=20,pady=10)
        Label(tot,text="tooooooooot",bg='pink').pack(padx=5,pady=5)
        Label(tard,text="taaaard",bg='white').pack(padx=5,pady=5)
     
     
     
    fenetre.mainloop()

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par pitchu Voir le message
    bonjour,

    J'ai réussi à crée plusieurs widgets mais il y en a un qui est écrasé ou sort de la fenêtre comment pourrais-je adapter leurs tailles pour que tous les widgets soient affiché ?

    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
     
     
    fenetre = Tk()
     
     
     
    niveau = Frame(fenetre,borderwidth=5,relief=FLAT,bg='Brown')
    niveau.pack(padx=0,pady=10)
     
     
    for i in range(0,10):
     
    #-------------------------------------------------------------------------
        tache = Frame(niveau,borderwidth=10,relief=FLAT,bg='yellow')
        tache.pack(padx=0,pady=10)
     
     
        nom = Frame(tache,borderwidth=5,relief=GROOVE,bg='red')
        nom.pack(side="bottom",padx=10)
     
        tot = Frame(tache,borderwidth=5,relief=GROOVE,bg='black')
        tot.pack(side="left")
     
        tard = Frame(tache,borderwidth=5,relief=GROOVE,bg='violet')
        tard.pack(side="right")
     
     
        Label(nom,text="aaaaaa",bg='green').pack(padx=20,pady=10)
        Label(tot,text="tooooooooot",bg='pink').pack(padx=5,pady=5)
        Label(tard,text="taaaard",bg='white').pack(padx=5,pady=5)
     
     
     
    fenetre.mainloop()
    Bonjour,

    Après avoir testé votre code : il s'agit ni plus ni moins que d'un débordement d'affichage.

    Vous avez plus de widgets affichés par pack() que la fenêtre ne peut en afficher réellement.

    D'où "l'écrasement" des derniers widgets, en bas.

    Si vous devez réellement afficher beaucoup de widgets, peut-être vaudrait-il mieux recourir à un objet type ScrollView(), un viewport scrollable ?

    @+.

  5. #5
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Si tu utilises dix fois le même nom tache pour dix widgets différents et que tu les places tous les dix au même endroit, que peux tu attendre ?

    Sauve tes instances de widgets dans un dictionnaire et pense à incrémenter les .pack(padx=0,pady=10) pour ne pas les superposer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    widgets = {}
    for i in range(10)
        widgets["tache_%s" %i] = Frame(niveau,borderwidth=10,relief=FLAT,bg='yellow')
        widgets["tache_%s" %i].pack(padx=0,pady=10)
        widgets["nom_%s" %i] = Frame(tache,borderwidth=5,relief=GROOVE,bg='red')
        widgets["nom_%s" %i].pack(side="bottom",padx=10)
        widgets["tot_%s" %i] = Frame(tache,borderwidth=5,relief=GROOVE,bg='black')
        widgets["tot_%s" %i].pack(side="left")
        etc ...
    De surcroît, tu devras sans doute accéder à tes widgets par après dans ton code, ça n'aurait pas été possible avec ton code puisqu'ils avaient tous le même nom.

  6. #6
    Membre éprouvé
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Par défaut
    Bonjours bienvenue néo-pythons,

    Je pense que la méthode pack() n'est pas la bonne solution (géométrie manager) pour placer 4 Frame dans un une Frame parente qui elle peut être placer avec la méthode pack() car c'est le conteneur d'une autres Frame() qui elle même est la fenêtre parentes de tes 4 Frames.

    Il faudrait utiliser la méthode grid() qui est plus évoluer que pack, je sais tu débute, qui est en faîtes un placement par grille alors que la méthode pack() ne fait que emballer avec des options de placement les widgets...

    La méthode grid() permet de placer ses widgets de en définissant des grilles configurable en termes de lignes et de colonnes dans un widget parent qui peut être placer avec la méthode pack().

    Disont que tu veut faire une fenêtre avec un Label sur la première ligne et trois boutons chacun dans une cellule sous le Label:

    (Désolé pour la difficulté de la directive de génération des boutons mais ça exécute simplement un string qui peut être formater avec la primitive format() et ainsi générer des variables ce qui te permettra de garder une référence a ton widget.)

    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
     
    # -*- coding: utf-8 -*-
     
    # Cette première ligne précise l'encodage du fichier de ton code source et si tu ne la mets pas tu aura un traceback sous Linux. 
     
    from Tkinter import *
     
    root=Tk()
     
    root_frame=Frame(root)
    root_frame.pack()
     
    label_upper=Label(root_frame,text="Line Label")
    label_upper.grid(row=0,column=0,columnspan=3,in_=root_frame) # Sur la première ligne en prenant 3 cellules (columnspan) avec comme parent root_frame
     
    for i in range(0,3) :
      exec("but_{0}=Button(root_frame,text=\"button number_{0}\")".format(i))     # Ainsi tu garde une référence a chaque bouton en exécutant un string grâce a exec().
      exec("but_{0}.grid(row=1,column={0},in_=root_frame)".format(i))             # Placement dans la grille.
     
    root.mainloop()
    Désolé pour la complexité du code mais il est impératif de garder une référence de ce que tu génère...
    Tu pourra ainsi refaire appel au bouton:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    def printer() :
      print "c\'est facile en faîtes"
     
    but_0.config(command=printer)
    Et en appelant:
    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
     
    print ma_var.grid.__doc__      # C'est une méthode spéciale qui fournis de la documentation sur l'objet que tu manipule et qui existe pratiquement toujours 
     
    Position a widget in the parent widget in a grid. Use as options:
            column=number - use cell identified with given column (starting with 0)
            columnspan=number - this widget will span several columns
            in=master - use master to contain this widget
            in_=master - see 'in' option description
            ipadx=amount - add internal padding in x direction
            ipady=amount - add internal padding in y direction
            padx=amount - add padding in x direction
            pady=amount - add padding in y direction
            row=number - use cell identified with given row (starting with 0)
            rowspan=number - this widget will span several rows
            sticky=NSEW - if cell is larger on which sides will this
                                    widget stick to the cell boundary
    Si tu a des questions surtout n'hésite pas.

    Sinon a tu déjà télécharger la documentation officiel de ta version de python:

    Pour python 2.7.6
    Pour python 3.4.0

    Je te conseille le format *.html (Ouvrir le fichier index.html et l'ajouter a tes bookmarks) ainsi tu pourra faire des recherches dans la documentation officielle de tous les modules de la distribution standart (lien Library) , cela te sera grandement utiles durant toute ta quête de python.

    Sur ce bon python a toi en espérant ne pas t'avoir trop embêter.

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut
    Bonjour,
    en fait je voudrais faire l'interface d'un graphe MPM , j'affiche les taches et je les relie par rapport a leur successeur.
    Je vais regarder la doc pour la méthode grid()

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par pitchu Voir le message
    Bonjour,
    en fait je voudrais faire l'interface d'un graphe MPM , j'affiche les taches et je les relie par rapport a leur successeur.
    Je vais regarder la doc pour la méthode grid()
    Bonjour,

    Dans ce cas, pourquoi ne pas utiliser plutôt le canevas graphique de tkinter ?

    Doc :

    http://infohost.nmt.edu/tcc/help/pub...eb/canvas.html

    @+.

  9. #9
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut
    Comment puis-je mettre un text dans un canvas ? , j'ai essayé d'utilisé zone.create_text() mais cela ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    fenetre = Tk()
     
    #-------------------------------------------------------------------------
    zone = Canvas(fenetre, width=500, height=500,bg="yellow")
    zone.grid(column=0, row=0)
     
    zone.create_rectangle(100,100,200,200) #dessine un rectangle
     
    zone.create_text("bonjour")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
        zone.create_text("bonjour")
      File "C:\Python32\lib\tkinter\__init__.py", line 2256, in create_text
        return self._create('text', args, kw)
      File "C:\Python32\lib\tkinter\__init__.py", line 2232, in _create
        *(args + self._options(cnf, kw))))
    _tkinter.TclError: wrong # coordinates: expected 2, got 1

  10. #10
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par pitchu Voir le message
    Comment puis-je mettre un text dans un canvas ? , j'ai essayé d'utilisé zone.create_text() mais cela ne marche pas
    Si vous ne dites pas ou vous voulez placer le texte, çà râle.
    "placer", c'est préciser les coordonnées x, y: .create_text(x, y, text="text",...)
    Ca serait bien de trouver une documentation non?

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

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par pitchu Voir le message
    Comment puis-je mettre un text dans un canvas ? , j'ai essayé d'utilisé zone.create_text() mais cela ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    fenetre = Tk()
     
    #-------------------------------------------------------------------------
    zone = Canvas(fenetre, width=500, height=500,bg="yellow")
    zone.grid(column=0, row=0)
     
    zone.create_rectangle(100,100,200,200) #dessine un rectangle
     
    zone.create_text("bonjour")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
        zone.create_text("bonjour")
      File "C:\Python32\lib\tkinter\__init__.py", line 2256, in create_text
        return self._create('text', args, kw)
      File "C:\Python32\lib\tkinter\__init__.py", line 2232, in _create
        *(args + self._options(cnf, kw))))
    _tkinter.TclError: wrong # coordinates: expected 2, got 1
    Voici un exemple qui fonctionne :

    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
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
     
    from tkinter import *
     
    fenetre = Tk()
     
    canvas = Canvas(fenetre, width=500, height=500, bg="white")
     
    canvas.pack()
     
    canvas.create_rectangle(200, 200, 300, 300, fill="yellow", outline="red", width=5)
     
    canvas.create_text(250, 250, text="bonjour", font="sans 14 bold", fill="blue")
     
    fenetre.mainloop()
    SVP, prenez le temps de lire la doc attentivement avant de crier au loup.

    http://infohost.nmt.edu/tcc/help/pub...eate_text.html

    http://infohost.nmt.edu/tcc/help/pub...eb/canvas.html

    Si la méthode canvas.create_text() existe dans la doc officielle, c'est forcément qu'elle fonctionne.

    Alors si elle ne fonctionne pas chez vous, c'est que vous avez certainement commis une erreur quelque part.

    Donc SVP, relisez la doc.

    Merci.

  12. #12
    Membre éprouvé
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Par défaut De la doc pour pichu
    Salut pitchu,

    Je connais un document qui liste toutes les méthodes, attributs et options de chaque widget de Tkinter mais le problème c'est qu'il date un peu (Tkinter 8.4) et ce qui a été ajouter n'est pas documenté. Mais le document est une bonne base de connaissance car exhaustif et m'a beaucoup aider dans la création de G.U.I (Graphical User Interface) avec Tkinter.

    Doucmentation pout Tkinter.

    Jette y un œil pour voir tout ce que l'on peut faire avec Tkinter.

    Sur ce bon python a toi.

  13. #13
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    @Luke,

    Tu as attisé ma curiosité

    Quelle est la raison particulière à l'utilisation d'exec dans ton code pour générer plusieurs boutons ?

  14. #14
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    @Luke,

    Tu as attisé ma curiosité

    Quelle est la raison particulière à l'utilisation d'exec dans ton code pour générer plusieurs boutons ?
    En effet, c'est un style étrange:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i in range(0,3) :
      # Ainsi tu garde une référence a chaque bouton en exécutant un string grâce a exec().
      exec("but_{0}=Button(root_frame,text=\"button number_{0}\")".format(i))     
      # Placement dans la grille.
      exec("but_{0}.grid(row=1,column={0},in_=root_frame)".format(i))
    Bah çà marche et tous les goûts sont dans la nature.
    Mais pourquoi se compliquer autant la vie dans ce cas ci?
    C'est sur que çà peut faire strange pour ce qui aime Python parce qu'il permet d'écrire plus simplement.

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

  15. #15
    Membre éprouvé
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Par défaut utilisation d'exec
    J'ai découvert l'utilisation de la directive exec en écrivant un jeu de football dont je ne souvient pas bien, avec pygame, ou chaque joueur était une instance d'une classe Joueur qui avait un attribut numéro, sous forme de string ("joueur_numero_*") permettant d'identifier le joueur qui avait le ballon et que l'on contrôlait a ce moment la, alors il me fallait un moyen de faire faire des actions:
    -passer
    -tirer
    etc..
    pour le joueur qui avait le ballon et la classe équipe avait une référence du numéro du joueur en possession du ballon alors j'ai utiliser exec pour faire faire des actions au joueur contrôler actuellement et aux autres joueurs actuellement dans le rayon d'action du ballon pour le positionnement courir synchroniser avec le joueur en possession du ballon.

    Mais combiner a la primitive format() cela devient un excellent moyen de générer des variables, en fonction de paramètres a formater avec format().

    Le jeu de football n'est rien devenus car c'était mon deuxième jeu avec pygame et plutôt un test pour tester les limites de pygame et l'IA de l'équipe adverse est difficile a faire contrairement a l'équipe contrôlé.

    Voila.

  16. #16
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Oui mais exec était impératif pour quelle raison ?

    Tu peux essayer ce code... Je trouve dans l'idée de créer de multiples objets

    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
    from tkinter import *
     
    def test1():
        print("test1")
     
    def test2():
        print("test2")
     
    def test3():
        print("test3")
     
    fonctions = (test1, test2, test3)
     
    root = Tk()
     
    for fonc in fonctions:
        b = Button(root, text=fonc.__name__, command=fonc)
        b.pack()
     
    root.mainloop()

  17. #17
    Membre éprouvé
    Avatar de Luke spywoker
    Homme Profil pro
    Etudiant informatique autodidacte
    Inscrit en
    Juin 2010
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant informatique autodidacte

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 077
    Par défaut
    Oui mais exec était impératif pour quelle raison ?
    Car dans pygame et comme le jeu de football était contrôler par clavier si l'on appuis sur une touche et que un joueur a le ballon si il vaut tirer on presse une seule touche qui sert a tirer quand ont a le ballon donc après identification du joueur actuellement contrôler il faut exécuter la méthode du joueur en question.
    D'ailleurs pareil pour le déplacement du joueur quand ont a pas le ballon, qui était identifier par la proximité du ballon.
    Bref stop bla, bla ,bla cela donne quelque chose comme ça en pseudo code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    while True :
      for event in pygame.event.get() :
        if event.type == QUIT :
          exit
        elif event.type == KEYDOWN :
          if event.key == K_a : # Bouton pour shooter.
            exec( "Joueur_numero_{0}.shooter()".format(fonction_retourne_numero_du_joueur_controler()) ) 
      pygame.display.update()
    Je ne sais si l'emploie de la directive exec était impérative mais c'est aussi une question de style.

    exec est utile si l'on ne sait pas a quoi on doit s'attendre... a méditer.

Discussions similaires

  1. [VB.NET] [newbie] Charger plusieurs .X et les déplacer
    Par tamagotchi dans le forum DirectX
    Réponses: 12
    Dernier message: 12/04/2006, 11h45
  2. Plusieurs styles pour les liens
    Par oranoutan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 11/01/2006, 11h49
  3. Réponses: 2
    Dernier message: 21/09/2005, 12h18
  4. Réponses: 5
    Dernier message: 05/10/2004, 13h05
  5. Réponses: 4
    Dernier message: 11/09/2004, 16h38

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