Bonjour,
Je n'arrive pas à avoir le temps en direct d'une musique, j'utilise la commande pygame.mixer.music.get_pos(), mais je sais pas comment répéter cette commande en boucle pour que elle me donne sans cesse le temps...
Bonjour,
Je n'arrive pas à avoir le temps en direct d'une musique, j'utilise la commande pygame.mixer.music.get_pos(), mais je sais pas comment répéter cette commande en boucle pour que elle me donne sans cesse le temps...
salut,
c'est quoi le "temps d'une musique", la durée du morceau ? le rythme ? l'année de sa composition ?
Bonjour,
La solution la plus naïve :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 while true: print pygame.mixer.music.get_pos()
Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi
Ma page sur DVP
Mon Portfolio
Qui connaît l'erreur, connaît la solution.
Juste le temps ou en est la musique, je voulais aussi avoir le temps total de la musique mais j'ai laissé tombé je trouvais rien. Sinon je vais test while true, mais j'avais déjà test un truc similaire, sauf que du coup quand sa me donne le temps direct de la musique j'avais le lecteur qui crashais le temps que cela m'affichais le temps pu en était la musique sur python
Je confirme le while true fait crash ma fenetre... Le fait de trop faire une action infini donne trop de travaille à python je pense... Du coup sa me bloque :/
EDIT: j'ai enfin trouvé :'), pour ceux qui en aurait besoin :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 def temps(): t = Timer(1.0, temps) t.start() print (pygame.mixer.music.get_pos()) temps()
Le while true: ne crash pas la fenêtre, mais comme cela provoque un non rafraichissement de la fenêtre, celle-ci est considérée comme "crashée" par le système.
C'est bien pour cela que je parlais de solution naïve, vu que je ne pouvais pas vous indiquer plus sans mieux connaitre votre code/cas d'utiliser. L'idée du timer est bonne
Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi
Ma page sur DVP
Mon Portfolio
Qui connaît l'erreur, connaît la solution.
Du coup j'ai une autre question... Comment je pourrais convertir ces millisecondes afin de les afficher sur la fenêtre en heure, minute et seconde?
Et ensuite comment avoir le temps total d'une musique ouvert avec askopenfilename?
EDIT: pour info je pensais au debut connaitre le chemin du fichier ouvert comme sa:
mais sa me donne cela:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 def Ouvrir(): """Définition de l'ouverture et le chargement d'un fichier""" filename = tkinter.filedialog.askopenfilename(title="Ouvrir votre fichier audio",filetypes=[('mp3 files','.mp3'),('all files','.*')]) pygame.mixer.music.load(filename) pygame.mixer.music.play() dir_path = os.path.dirname(os.path.abspath(filename)) print(dir_path)
C:\Users\Utilisateur\Music
Pour le temps total, il existe une triche (que l'on peux utiliser sur les fichiers "normaux"), c'est de se placer à la fin avec set_pos() ... le problème est le paramètre. Peut être -1 passe, peut être pas (à priori non : http://www.libsdl.org/projects/SDL_m...xer_frame.html ). Donc peut être avec une valeur très très grande .
Sinon, la conversion de milliseconde vers seconde/minute/heure, ce ne sont que des mathématiques. Vous savez que une seconde, c'est 1000 millisecondes, une minute, c'est 60 secondes et ainsi de suite. Piste : les divisions et les modulos
Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi
Ma page sur DVP
Mon Portfolio
Qui connaît l'erreur, connaît la solution.
j'avais mis cette edit trop tard ^^:
EDIT: pour info je pensais au debut connaitre le chemin du fichier ouvert comme sa:
mais sa me donne cela:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 def Ouvrir(): """Définition de l'ouverture et le chargement d'un fichier""" filename = tkinter.filedialog.askopenfilename(title="Ouvrir votre fichier audio",filetypes=[('mp3 files','.mp3'),('all files','.*')]) pygame.mixer.music.load(filename) pygame.mixer.music.play() dir_path = os.path.dirname(os.path.abspath(filename)) print(dir_path)
C:\Users\Utilisateur\Music
Sinon j'y avais pensé de démarrer à la fin, mais du coup mon soucis était que je connaissais justement pas le temps de fin ^^'. Je vais essayer sur cette piste même si je pensais que yavais moyen en connaissant le chemin du fichier d'extraire ces infos avec cette méthode : getsize(filename) → Retourne la taille d'un fichier (en octets)
Pour cette astuce des divisons j'avais déja essayé, j'avais convertie en seconde en divisant par mille. puis j'ai divisé par 60 et la je me retrouve avec un jolie nombre à virgule sans savoir quoi en faire... Je vais continué à regarder sa
La taille en octets n'indiquera pas le temps de la musique.
Pour askopenfilename, peut être une erreur dans les options, ou dans son utilisation (avez vous bien sélectionner un fichier).
Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi
Ma page sur DVP
Mon Portfolio
Qui connaît l'erreur, connaît la solution.
Oui mais je pensais qu'il y aurait peut être une commande pour extraire le temps ^^'. j'ai bien sélectionner une musique qui démarre. cela me donne le chemin de son dossier :/.
EDIT: les solutions pour le temps de musique marche pas... Du coup je cherche un peu partout si y'a pas un détails qui m'échapperait pour trouver le temps.
Pouvez-vous essayer de corriger le souci en vous basant (et en testant) dans un programme à part, l'exemple de cette page : http://tkinter.unpythonic.net/wiki/tkFileDialog
Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi
Ma page sur DVP
Mon Portfolio
Qui connaît l'erreur, connaît la solution.
les solutions pour le temps de musique marche pas... Du coup je cherche un peu partout si y'a pas un détails qui m'échapperait pour trouver le temps.
Et lexemple sur se site crash O_o
EDIT: j'ai trouvé xD:
l'avant dernière ligne faut retirer os.path.dirname qu'elle nul
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 def Ouvrir(): """Définition de l'ouverture et le chargement d'un fichier""" filename = tkinter.filedialog.askopenfilename(title="Ouvrir votre fichier audio",filetypes=[('mp3 files','.mp3'),('all files','.*')]) pygame.mixer.music.load(filename) pygame.mixer.music.play() chemin = os.path.dirname(os.path.abspath(filename)) print(chemin)
du coup j'ai voulu mettre un texte dans mon canvas qui donne le titre de ma musique avec cela:
Sauf que quand je demarre une autre le titre se met sur l'ancien car sa modifie pas le teste mais pose par dessus :/. Une piste?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 def Ouvrir(): """Définition de l'ouverture et le chargement d'un fichier""" filename = tkinter.filedialog.askopenfilename(title="Ouvrir votre fichier audio",filetypes=[('mp3 files','.mp3'),('all files','.*')]) pygame.mixer.music.load(filename) pygame.mixer.music.play() """Affiche nom du fichier""" Nom = os.path.basename(os.path.abspath(filename)) fond0.create_text(racine0.winfo_screenwidth()/3-racine0.winfo_screenwidth()/32-6, racine0.winfo_screenheight()/1.5-((racine0.winfo_screenheight()/1.5-racine0.winfo_screenheight()/1.76)/2), fill='white',text=Nom)
Il faut forcer la suppression de l'ancien texte. Donc il faut garder l'ancien texte dans une variable.
Ou même, ne faire qu'une variable, ne jamais la supprimer mais, remplacer le texte dans l'élément Text.
Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi
Ma page sur DVP
Mon Portfolio
Qui connaît l'erreur, connaît la solution.
j'ai fait sa et sa marche:
Sauf que sa marche pas, il faut que la valeurs dans fond0.delete() soit égal à 4 puis augmente de 1 à chaque tour
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 def Ouvrir(): """Définition de l'ouverture et le chargement d'un fichier""" filename = tkinter.filedialog.askopenfilename(title="Ouvrir votre fichier audio",filetypes=[('mp3 files','.mp3'),('all files','.*')]) pygame.mixer.music.load(filename) pygame.mixer.music.play() """Affiche nom du fichier""" Nom = os.path.basename(os.path.abspath(filename)) x=4 y=x+1 fond0.delete(y) fond0.create_text(racine0.winfo_screenwidth()/3-racine0.winfo_screenwidth()/32-6, racine0.winfo_screenheight()/1.5-((racine0.winfo_screenheight()/1.5-racine0.winfo_screenheight()/1.76)/2), fill='#592310',text=Nom)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager