Partage
  • Partager sur Facebook
  • Partager sur Twitter

passer à la musique suivante

logiciel python, avec boucle if qui ne marche pas

    16 avril 2016 à 12:04:46

    Bonjour, le logiciel est simple: il joue les musiques d''une liste déjà prédefinie, qui va se randomiser à chaque fois qu'on ouvre le logiciel. Le problème est que quand j'appuie sur le bouton next (qui est ici dans notre logiciel, le bouton pause, faute de temps) il reste juste à lire la deuxième musique de la liste et ne passe pas à la prochaine. Je ne sais pas si il faut mettre une boucle if, si le problème viens des fonctions, ou meme des boutons, et j'aurais vraiment besoin d'aide :/ Merci d'avance (voici le programme qui "marche" en blocant tjrs ) la deuxième musique, pensant que le problème viens de ces zones(j'ai copié différentes zones du code original):
    impause = PhotoImage(file="Bouton pause.gif")
    BouttonPause = Button(Mafenetre, text ='Pause', command = nexty, fg='blue', bg="black", image=impause)
    BouttonPause.pack(side = LEFT, padx = 10, pady = 10)
    
    
    global a
    a=-1
    def nexty():
        a=-1
        if a <= 5:
         global a
         a=a+1
         command = suivant(a)                      # Module pygame mixer avec la commande pause
         fichier_musique = liste[i]
         pygame.mixer.music.load(fichier_musique)
         pygame.mixer.music.play()
    
    
    
    
    global i
    i=0
    def suivant(a):
        global i
        i=a+1
    et là le code principal/original:

    import pygame
    import ctypes
    from tkinter import *
    import webbrowser
    from tkinter import filedialog
    from pygame import mixer
    import random
    import os
    import sys
    
    
    
    def Liste(): # Fonction qui fixe la playliste avec l'enchainement des chansons
        pygame.mixer.music.load(fichier_musique)
        pygame.mixer.music.play()
    
    def Professeurs(): #  Fonction appelant une fenetre enfant où on fixe un message
        ctypes.windll.user32.MessageBoxW(0, "Nous dédions ce message à nos professeurs et nous les remercions pour cet enseignement; les cours étaient tout le temps clairs et interressants.                          Au final cette spécialité nous a faite découvrir l'informatique et nous y avons porter un grand interet !", "Aux professeurs",0)
    
    def Liens(): # Fonction ouvrant un lien vers notre sitographie
        webbrowser.open('http://projetisn.unblog.fr/2016/04/06/sitographie-projet-isn-lecteur-de-musique/') #Mettre les liens de notre sitographie
    
    def Liens2(): # Meme fonction pour notre carnet de bord
        webbrowser.open('www.google.com') #Mettre les liens de notre carnet de bord
    
    
    global i
    i=0
    def suivant(a):
        global i
        i=a+1
    
    
    def commencer():                             # Module pygame mixer avec la commande de lecture, touche play doit devenir pause quand on appuie dessus (et on doit faire une touche stop ou reprendre....
       pygame.mixer.music.play()                 #+touche next music
    
    global a
    a=-1
    def nexty():
        a=-1
        if a <= 5:
         global a
         a=a+1
         command = suivant(a)                      # Module pygame mixer avec la commande pause
         fichier_musique = liste[i]
         pygame.mixer.music.load(fichier_musique)
         pygame.mixer.music.play()
    
    
    
    
    
    def jaime():                        # Module pygame mixer avec la commande de reprise
      jj
    def Quitter():                          # Pour quitter le programme
        Mafenetre.destroy()
        pygame.mixer.music.stop()
    
    
    pygame.init()                   # On appelle (initialise) le module pygame
    
    Mafenetre = Tk()                    # Creation de la fenetre tkinter et mise en palce de ses options
    Mafenetre.geometry('600x500+400+100')
    Mafenetre.iconbitmap("ico.ico")
    Mafenetre.configure(bg='black')
    Mafenetre.title('Lecteur MP3')
    
    
    
    photo = PhotoImage(file="wpp.gif")  # Creation d'une zone de définition d'un fond d'écran et mise en place de ce fond d'ecran
    Largeur = 600
    Hauteur = 350
    Canevas = Canvas(Mafenetre,width = Largeur, height =Hauteur)
    item = Canevas.create_image(0,0,anchor=NW, image=photo)
    Canevas.pack()
    
    
    BarreMenu = Menu(Mafenetre)                     # Creation d'une barre de menu
    Mafenetre.config(menu=BarreMenu)
    command=Liste
    
    file = Menu(BarreMenu, tearoff=0)       # Sous-menus
    #enlèvement de ouvrir : file.add_command(label="Ouvrir", command=fichier) et donc avant de la commande fichier
    file.add_command(label="Commencer", command=Liste ) #mais je pense a réinitialiser au lieu de commencer (genre rehasard)
    file.add_separator()
    file.add_command(label="Quitter", command=Quitter)
    BarreMenu.add_cascade(label="  Fichier  ", menu=file)
    
    liens = Menu(BarreMenu, tearoff = 0)  # Autre barre de menu
    
    liens.add_command(label="Sitographie",command=Liens) # Sous-menus
    liens.add_separator()
    liens.add_command(label="Carnet de Bord",command=Liens2)
    
    BarreMenu.add_cascade(label="  Liens utiles ", menu=liens)
    #Attente des fonctions
    
    remerciement = Menu(BarreMenu, tearoff=0)    # Autre barre de menu
    remerciement.add_command(label="Professeurs",command=Professeurs)    # Sous-menus
    BarreMenu.add_cascade(label='   Remerciements   ', menu=remerciement)
    #Attente des fonctions
    
    implay = PhotoImage(file="Bouton play.gif")     # Definition des boutons lecture/pause/reprise ainsi que les icones pour chaque bouton
    BoutonLecture = Button(Mafenetre, text ='Lecture', command = commencer, fg='blue', bg='black', image=implay)
    BoutonLecture.pack(side = LEFT, padx = 10, pady = 10)
    
    
    impause = PhotoImage(file="Bouton pause.gif")
    BouttonPause = Button(Mafenetre, text ='Pause', command = nexty, fg='blue', bg="black", image=impause)
    BouttonPause.pack(side = LEFT, padx = 10, pady = 10)
    
    imreprise = PhotoImage(file="Bouton reprise.gif")
    BoutonReprise = Button(Mafenetre, text ='Reprendre', command = jaime, fg='blue', bg='black', image=imreprise)
    BoutonReprise.pack(side = LEFT, padx = 10, pady =10)
    
    listbox = Listbox(Mafenetre,fg="blue",bg="grey",width=50)    # Creation d'une zone ou se fixera la liste et ses options pour la playlist
    listbox.insert(0, "                             Votre playlist : ")
    listbox.pack(side = RIGHT, padx = 5, pady =25)
    
    liste = ["C:/Users/72mechi/Desktop/python musique/mp3/musiques/electro/gazzo.mp3",      #liste avec les musiques, random va choisir un titre au hasard, puis on va choisir la musique choisie à mettre à jouer
    "C:/Users/72mechi/Desktop/python musique/mp3/musiques/electro/mura.mp3",
    "C:/Users/72mechi/Desktop/python musique/mp3/musiques/electro/selfie.mp3", #mettre des slashs forward pour que ca marche et non des "\"
    "C:/Users/72mechi/Desktop/python musique/mp3/musiques/pop/truth.mp3",
    "C:/Users/72mechi/Desktop/python musique/mp3/musiques/pop/summer.mp3",
    "C:/Users/72mechi/Desktop/python musique/mp3/musiques/pop/years.mp3"]
    random.shuffle(liste)
    
    print(liste)
    fichier_musique = liste[0]
    pygame.mixer.music.load(fichier_musique)
    listbox.delete (1, END)
    listbox.insert(END, fichier_musique)
    
    
    
    
    
    
    
         #touche next va faire i+1
    
    
    
    
    Mafenetre.mainloop()   # Boucle pour que la fenetre s'affiche

    -
    Edité par 72mechi 16 avril 2016 à 12:08:12

    • Partager sur Facebook
    • Partager sur Twitter
    72mechi
      16 avril 2016 à 16:48:43

      Bonjour ^^ je ne suis pas sûr d'avoir bien trouvé la source du problème mais j'émets quelques hypothèses:
      -peut-être y a-t-il un problème au niveau de la variable globale 'a' ou 'i' (perso j'évite l'usage intensif des globales, ça apporte plus de problèmes que ça n'en solve..)
      -sinon, cela viendrait sûrement de Tkinter et à la définition du bouton; as-tu essayé avec un lambda? du type:
      BouttonPause = Button(Mafenetre, text ='Pause', command=lambda:nexty(), fg='blue', bg="black", image=impause)

      de cette manière le lambda permetterait (probablement) de rappeller nexty plusieurs fois...

      à essayer, (je ne peux pas le faire, si je copie-colle je n'aurais pas les images)

      en espérant que cela puisse résoudre tes soucis, bon courage ;)
       

      • Partager sur Facebook
      • Partager sur Twitter
      Si je suis tête en l'air, c'est par habitude de viser le sommet
        18 avril 2016 à 20:39:36

        je n'ai pas réllement compris l'usage de lambda :/ je l'ai essayé sur le programme mais il ne veut tjrs pas passer à la musique d'après (et j'ai enlevé les variables globales), de plus ce n'est pas l'interface tkinter, c'est pygame. Serait il interressant de voir une fonction qui compterait le nb de click du bouton, pour ensuite mettre cette valeur dans liste[i] et donc on aurait la musique d'après ? (je ne sais pas compter le nb de click :/ )
        • Partager sur Facebook
        • Partager sur Twitter
        72mechi
          19 avril 2016 à 22:56:52

          Pour le lambda, je suis pas assez calé pour te l'expliquer correctement, mais tu peux trouver plein de renseignement sur le web :)

          effectivement, tu peux résoudre ton problème par un compteur, en voici l'exemple (et oui j'utilise une variable globale, pour une fois):

          from tkinter import Button
          global compteur
          compteur=0
          def click():
              global compteur
              compteur+=1
              print(compteur)
              
          def bouton_suivant():
              fen=Tk()
              Button(fen,text="►", command=click).pack()
              fen.mainloop()
          bouton_suivant()

          si tu veux faire de cette manière, je pense que cela facilitera bien des choses, ca vaut le coup de tenter :p

          • Partager sur Facebook
          • Partager sur Twitter
          Si je suis tête en l'air, c'est par habitude de viser le sommet
            21 avril 2016 à 18:06:03

            Merci bien :D en faite je me suis inspiré de ce que tu m'a dit et ca marche, so merci beaucoup ;)
            • Partager sur Facebook
            • Partager sur Twitter
            72mechi

            passer à la musique suivante

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown