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
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
Si je suis tête en l'air, c'est par habitude de viser le sommet
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 :/ )
Merci bien en faite je me suis inspiré de ce que tu m'a dit et ca marche, so merci beaucoup
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.
et là le code principal/original: