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

Python Discussion :

Une fonction peut-elle en contenir plusieurs ?


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Lycéen
    Inscrit en
    Mai 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2018
    Messages : 24
    Par défaut Une fonction peut-elle en contenir plusieurs ?
    Bonjour, j'aimerai savoir si il est possible de rentrer plusieurs fonctions dans une même fonction. En effet dans mon programme j'ai besoin d'intégrer plusieurs fonctions dans une même fonctions, mais lorsque ma fenêtre s'ouvre (je programme sur tkinter une interface graphique) mes fonctions sont comme "gelés", aucune ne se met en route. Je ne sais pas si j'ai fais une erreur dans la programmation (n'ayant aucun message d'erreur) ou si tout simplement c'est impossible. Je sais qu'il existe d'autres méthodes comme les classes, mais nous ne les avons jamais étudié en cours... Merci de votre aide. Voici mon 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
    82
    #Création de la fenêtre d'introduction
    fenetreintro = tk.Tk()
    label = tk.Label(fenetreintro, text="Wanted")
    label.pack()
    canvas=tk.Canvas(fenetreintro, width=800, height=500, background='white')
    canvas.pack()
     
    #Chemin pour les images
    script_dir = os.path.dirname(__file__)
    rel_path = "/images/"
    abs_file_path = script_dir + rel_path
     
    photo = Image.open(abs_file_path+"wanted.jpeg")
    photowanted = ImageTk.PhotoImage(photo)
    wanted=canvas.create_image(400, 200, image=photowanted)
     
    #Fenêtre jeu
    def FenetreJeu():
        fenetrejeu = tk.Tk()  
        titre1 = tk.Label(fenetrejeu, text="Wanted-Jeu")  
        titre1.pack() 
        Minuteur=tk.Label(fenetrejeu,text="60") 
        Minuteur.pack()  
        canvasjeu=tk.Canvas(fenetrejeu, width=800, height=800, background='white')  
        canvasjeu.pack()  
     
        image = Image.open(abs_file_path+"clarys2.png")  
        photoclarys2 = ImageTk.PhotoImage(image)
        canvasjeu.create_image(500,150, image=photoclarys2) 
     
        actu=60 
     
        def chrono():  
            global actu  
            if actu>-1: 
                Minuteur.config(text=str(actu))  
                actu=actu-1  
                fenetrejeu.after(1000,chrono) 
            else: 
                Minuteur.config(text="PERDU")
        chrono()      
     
        dx = tk.IntVar()  
        dy = tk.IntVar()  
     
        images0 = [0]*12
        images = [0]*12
        noms = ["clarys", "baptiste", "anais", "allan", "arnold", "thomas", "ayoub", "caroline", "deborah", "louis", "paul", "nono"]
     
        for i in range(12):
            images0[i] = ImageTk.PhotoImage(Image.open(abs_file_path + noms[i] + ".png"))
            images[i]=canvasjeu.create_image(50+50*i,300,image=images0[i])
     
        def deplacement ():
            dx.set(0)
            dy.set(5)
            for i in range(12):
                if canvasjeu.coords(images[i])[1]>400 :
                    canvasjeu.coords(images[i],50+50*i,300)
                    canvasjeu.move(images[i],dx.get(),dy.get())
                fenetrejeu.after(60,deplacement)  
     
        deplacement() 
     
        fenetrejeu.mainloop() 
     
    #Fenêtre instructions
    def FenetreInstructions(): 
        fenetreinstructions=tk.Tk()
        titre2=tk.Label(fenetreinstructions, text="INSTRUCTIONS AU JEU")
        titre2.pack()
     
    bouton1=tk.Button(fenetreintro, text="PLAY", command=FenetreJeu)
    bouton1.pack()
     
    bouton2=tk.Button(fenetreintro, text="Instructions", command=FenetreInstructions)
    bouton2.pack()
     
    bouton3=tk.Button(fenetreintro, text="Quitter", command=fenetreintro.destroy)
    bouton3.pack()
     
    fenetreintro.mainloop()

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

    Citation Envoyé par KROCLARYS Voir le message
    mais lorsque ma fenêtre s'ouvre (je programme sur tkinter une interface graphique) mes fonctions sont comme "gelés"
    Ayez le réflexe d'abuser de la commande magique "print": afficher un petit message lorsque la fonction démarre vous permettrait de répondre à cette question... et une fois assuré que les fonctions sont bien appelées (ou pas) vous poser d'autres questions.

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

  3. #3
    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
    Bonjour, j'aimerai savoir si il est possible de rentrer plusieurs fonctions dans une même fonction.
    Ça oui, mais sans lire le code (flemme), pour quelle raison ? Que tentez vous de faire concrètement et sans code ?

  4. #4
    Membre averti
    Femme Profil pro
    Lycéen
    Inscrit en
    Mai 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2018
    Messages : 24
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Que tentez vous de faire concrètement et sans code ?
    Enfait, je créer un jeu pour mon projet de bac. J'ai décidé de créer une fenêtre d'accueil avec les boutons "play", "instructions", et donc j'ai associé à la commande de ces boutons une fonction par exemple la fonction "def FenetreJeu" mais dans cette fonction je dois rentrer toutes les instructions pour faire marcher mon jeu (dont plusieurs fonctions). Je les ai donc rentrés, bien alignés etc... Mais quand j'exécute ma fenêtre jeu s'ouvre mais aucune fonction ne se lance, et il n'y a aucun msg d'erreur sur le traceback.

  5. #5
    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
    Ça peut être plusieurs problèmes,

    • Vérifier que le bouton est lié à la bonne fenêtre
    • Vérifier que le paramètre command est bien présent lors de l'initialisation du bouton
    • Vérifier qu'on a pas créé plusieurs instances de Tk, mais une seule et unique.

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Citation Envoyé par KROCLARYS Voir le message
    Mais quand j'exécute ma fenêtre jeu s'ouvre mais aucune fonction ne se lance, et il n'y a aucun msg d'erreur sur le traceback.
    Mais si il y a bien un joli message d'erreur...
    Et si vous avez pris la peine d'ajouter des "print" et que vous ne les voyez pas non plus, c'est que vous ne lancez pas votre programme normalement (i.e. ouvrir un terminal puis lancer le script via pythonX monscript.py)

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

Discussions similaires

  1. edmx une fonction peut-elle retourner un boolean ?
    Par Golzinne dans le forum Silverlight
    Réponses: 1
    Dernier message: 10/11/2010, 14h19
  2. [Débutant] Une fonction peut-elle prendre des caractères en argument ?
    Par mdelvaux89 dans le forum MATLAB
    Réponses: 7
    Dernier message: 07/04/2009, 21h31
  3. une fonction peut elle etre répétée indefiniment ?
    Par bilou95 dans le forum Général JavaScript
    Réponses: 39
    Dernier message: 25/05/2007, 13h51
  4. Une fonction peut-elle retourner plusieurs résultats ?
    Par aragorns dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/03/2005, 22h18
  5. Réponses: 5
    Dernier message: 25/11/2003, 10h02

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