PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > fr.comp.lang.python > Lire un sons en python
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
Lire un sons en python

Réponse
 
LinkBack Outils de la discussion
Vieux 24/08/2007, 13h40   #26
Eric Brunel
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Lire un sons en python

On Fri, 24 Aug 2007 14:27:21 +0200, <firelink.east@gmail.com> wrote:
[snip]
> lorsque je met le code , le son se joue dès le lancement , et
> lorsqu'on click sur le bouton il ne se joue pas du tout
>
> par exemple :
>
>
>
> root.title("Foule controle")
> root.geometry("157x138")
> f1 = Frame(root, width=78 , height= 138, bg="",bd=4 )
> f1.pack(side = LEFT)
> bou1=Button(f1, width =6,height=1,
> text='Aaah',command=playsound(path_sound , Aaah)


A part qu'il manque une parenthèse fermante - merci de faire un
copier/coller du *vrai* code, et pas de le réécrire... -, le comportement
que tu vois est tout à fait normal: quand tu crées le bouton, tu
*appelles* la fonction playsound en lui passant les paramètres path_sound
et Aaah, puis tu affectes la valeur *renvoyée* par la fonction à l'option
command du bouton. Vu que la fonction ne renvoie probablement rien, donc
None, tu as un bouton qui ne fait rien. Par contre, la fonction playsound
étant appelée, le son est joué à la création du bouton.

Pour faire ce que tu veux, il faut:

- Soit faire une fonction par son à jouer, sans paramètre, et passer le
nom de la fonction *sans parenthèses* à l'option command du bouton.
Exemple:
def playAaah():
playsound(path_sound, Aaah)
bou1=Button(f1, width =6,height=1,text='Aaah',command=playAaah)

- Soit utiliser lambda:
bou1=Button(f1, width =6,height=1,text='Aaah',command=lambda:
playsound(path_sound , Aaah))
Attention: ça pose souvent des problèmes d'espace de noms (grosso modo,
le lambda ne voit que les définitions globales, pas les locales)

- Soit utiliser les possibilités des dernières versions de Python pour la
programmation fonctionnelle. Etant scotché avec un Python 2.1, je ne
connais pas bien; je préfère que d'autres expliquent...

HTH
--
python -c "print ''.join([chr(154 - ord(c)) for c in
'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"
  Réponse avec citation
Vieux 24/08/2007, 13h40   #27
Eric Brunel
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Lire un sons en python

On Fri, 24 Aug 2007 14:27:21 +0200, <firelink.east@gmail.com> wrote:
[snip]
> lorsque je met le code , le son se joue dès le lancement , et
> lorsqu'on click sur le bouton il ne se joue pas du tout
>
> par exemple :
>
>
>
> root.title("Foule controle")
> root.geometry("157x138")
> f1 = Frame(root, width=78 , height= 138, bg="",bd=4 )
> f1.pack(side = LEFT)
> bou1=Button(f1, width =6,height=1,
> text='Aaah',command=playsound(path_sound , Aaah)


A part qu'il manque une parenthèse fermante - merci de faire un
copier/coller du *vrai* code, et pas de le réécrire... -, le comportement
que tu vois est tout à fait normal: quand tu crées le bouton, tu
*appelles* la fonction playsound en lui passant les paramètres path_sound
et Aaah, puis tu affectes la valeur *renvoyée* par la fonction à l'option
command du bouton. Vu que la fonction ne renvoie probablement rien, donc
None, tu as un bouton qui ne fait rien. Par contre, la fonction playsound
étant appelée, le son est joué à la création du bouton.

Pour faire ce que tu veux, il faut:

- Soit faire une fonction par son à jouer, sans paramètre, et passer le
nom de la fonction *sans parenthèses* à l'option command du bouton.
Exemple:
def playAaah():
playsound(path_sound, Aaah)
bou1=Button(f1, width =6,height=1,text='Aaah',command=playAaah)

- Soit utiliser lambda:
bou1=Button(f1, width =6,height=1,text='Aaah',command=lambda:
playsound(path_sound , Aaah))
Attention: ça pose souvent des problèmes d'espace de noms (grosso modo,
le lambda ne voit que les définitions globales, pas les locales)

- Soit utiliser les possibilités des dernières versions de Python pour la
programmation fonctionnelle. Etant scotché avec un Python 2.1, je ne
connais pas bien; je préfère que d'autres expliquent...

HTH
--
python -c "print ''.join([chr(154 - ord(c)) for c in
'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"
  Réponse avec citation
Vieux 24/08/2007, 13h52   #28
Jerome
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Lire un sons en python

firelink.east@gmail.com wrote:
>> En général je fais quelque chose comme ça personnellement :
>>
>> script_dir = sys.path[0]
>> my_path = './datas/file.png'
>>
>> my_path = script_dir + my_path[1:].replace('/', os.sep)

>
> pas tout saisi le point ne désigne pas un répértoire caché ? sans
> point cela désignerait la racine ..
>


le point désigne le répertoire courant mais c'est surtout une syntaxe
que je suis, j'aurais tout aussi bien pu mettre 'local://' à la place.

En gros tu peux définir tes chemins localement par rapport à
l'emplacement du script que tu lances et remplacer ce '.' par le
'sys.path[0]'. Cela te donne un chemin global correct que tu peux
utiliser pendant toute l'exécution du programme.
  Réponse avec citation
Vieux 24/08/2007, 13h52   #29
Jerome
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Lire un sons en python

firelink.east@gmail.com wrote:
>> En général je fais quelque chose comme ça personnellement :
>>
>> script_dir = sys.path[0]
>> my_path = './datas/file.png'
>>
>> my_path = script_dir + my_path[1:].replace('/', os.sep)

>
> pas tout saisi le point ne désigne pas un répértoire caché ? sans
> point cela désignerait la racine ..
>


le point désigne le répertoire courant mais c'est surtout une syntaxe
que je suis, j'aurais tout aussi bien pu mettre 'local://' à la place.

En gros tu peux définir tes chemins localement par rapport à
l'emplacement du script que tu lances et remplacer ce '.' par le
'sys.path[0]'. Cela te donne un chemin global correct que tu peux
utiliser pendant toute l'exécution du programme.
  Réponse avec citation
Vieux 24/08/2007, 14h13   #30
firelink.east@gmail.com
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Lire un sons en python

On 24 août, 14:40, "Eric Brunel" <see.signat...@no.spam> wrote:
> On Fri, 24 Aug 2007 14:27:21 +0200, <firelink.e...@gmail.com> wrote:
>
> [snip]
>
> > lorsque je met le code , le son se joue dès le lancement , et
> > lorsqu'on click sur le bouton il ne se joue pas du tout

>
> > par exemple :

>
> > root.title("Foule controle")
> > root.geometry("157x138")
> > f1 = Frame(root, width=78 , height= 138, bg="",bd=4 )
> > f1.pack(side = LEFT)
> > bou1=Button(f1, width =6,height=1,
> > text='Aaah',command=playsound(path_sound , Aaah)

>
> A part qu'il manque une parenthèse fermante - merci de faire un
> copier/coller du *vrai* code, et pas de le réécrire... -,


c'est un mauvais copier / coller vers le newsgroup , les parenthèses y
sont dans le code ..

le comportement
> que tu vois est tout à fait normal: quand tu crées le bouton, tu
> *appelles* la fonction playsound en lui passant les paramètres path_sound
> et Aaah, puis tu affectes la valeur *renvoyée* par la fonction à l'option
> command du bouton. Vu que la fonction ne renvoie probablement rien, donc
> None, tu as un bouton qui ne fait rien. Par contre, la fonction playsound
> étant appelée, le son est joué à la création du bouton.
>
> Pour faire ce que tu veux, il faut:
>
> - Soit faire une fonction par son à jouer, sans paramètre, et passer le
> nom de la fonction *sans parenthèses* à l'option command du bouton.
> Exemple:
> def playAaah():
> playsound(path_sound, Aaah)
> bou1=Button(f1, width =6,height=1,text='Aaah',command=playAaah)


c'est quasi identique au code de départ mis à part le path_sound
definie avant non ?



> - Soit utiliser lambda:
> bou1=Button(f1, width =6,height=1,text='Aaah',command=lambda:
> playsound(path_sound , Aaah))



> Attention: ça pose souvent des problèmes d'espace de noms (grosso modo,
> le lambda ne voit que les définitions globales, pas les locales)
> alors j'ai ajouter :


global Aaahh

ainsi que le code lambda , il me dit que Aaahh n'est pas définit ..

  Réponse avec citation
Vieux 24/08/2007, 14h13   #31
firelink.east@gmail.com
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Lire un sons en python

On 24 août, 14:40, "Eric Brunel" <see.signat...@no.spam> wrote:
> On Fri, 24 Aug 2007 14:27:21 +0200, <firelink.e...@gmail.com> wrote:
>
> [snip]
>
> > lorsque je met le code , le son se joue dès le lancement , et
> > lorsqu'on click sur le bouton il ne se joue pas du tout

>
> > par exemple :

>
> > root.title("Foule controle")
> > root.geometry("157x138")
> > f1 = Frame(root, width=78 , height= 138, bg="",bd=4 )
> > f1.pack(side = LEFT)
> > bou1=Button(f1, width =6,height=1,
> > text='Aaah',command=playsound(path_sound , Aaah)

>
> A part qu'il manque une parenthèse fermante - merci de faire un
> copier/coller du *vrai* code, et pas de le réécrire... -,


c'est un mauvais copier / coller vers le newsgroup , les parenthèses y
sont dans le code ..

le comportement
> que tu vois est tout à fait normal: quand tu crées le bouton, tu
> *appelles* la fonction playsound en lui passant les paramètres path_sound
> et Aaah, puis tu affectes la valeur *renvoyée* par la fonction à l'option
> command du bouton. Vu que la fonction ne renvoie probablement rien, donc
> None, tu as un bouton qui ne fait rien. Par contre, la fonction playsound
> étant appelée, le son est joué à la création du bouton.
>
> Pour faire ce que tu veux, il faut:
>
> - Soit faire une fonction par son à jouer, sans paramètre, et passer le
> nom de la fonction *sans parenthèses* à l'option command du bouton.
> Exemple:
> def playAaah():
> playsound(path_sound, Aaah)
> bou1=Button(f1, width =6,height=1,text='Aaah',command=playAaah)


c'est quasi identique au code de départ mis à part le path_sound
definie avant non ?



> - Soit utiliser lambda:
> bou1=Button(f1, width =6,height=1,text='Aaah',command=lambda:
> playsound(path_sound , Aaah))



> Attention: ça pose souvent des problèmes d'espace de noms (grosso modo,
> le lambda ne voit que les définitions globales, pas les locales)
> alors j'ai ajouter :


global Aaahh

ainsi que le code lambda , il me dit que Aaahh n'est pas définit ..

  Réponse avec citation
Vieux 24/08/2007, 14h21   #32
Jerome
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Lire un sons en python

firelink.east@gmail.com wrote:
> On 24 août, 14:40, "Eric Brunel" <see.signat...@no.spam> wrote:
>> On Fri, 24 Aug 2007 14:27:21 +0200, <firelink.e...@gmail.com> wrote:
>>
>> [snip]
>>
>>> lorsque je met le code , le son se joue dès le lancement , et
>>> lorsqu'on click sur le bouton il ne se joue pas du tout
>>> par exemple :
>>> root.title("Foule controle")
>>> root.geometry("157x138")
>>> f1 = Frame(root, width=78 , height= 138, bg="",bd=4 )
>>> f1.pack(side = LEFT)
>>> bou1=Button(f1, width =6,height=1,
>>> text='Aaah',command=playsound(path_sound , Aaah)

>> A part qu'il manque une parenthèse fermante - merci de faire un
>> copier/coller du *vrai* code, et pas de le réécrire... -,

>
> c'est un mauvais copier / coller vers le newsgroup , les parenthèses y
> sont dans le code ..
>
> le comportement
>> que tu vois est tout à fait normal: quand tu crées le bouton, tu
>> *appelles* la fonction playsound en lui passant les paramètres path_sound
>> et Aaah, puis tu affectes la valeur *renvoyée* par la fonction à l'option
>> command du bouton. Vu que la fonction ne renvoie probablement rien, donc
>> None, tu as un bouton qui ne fait rien. Par contre, la fonction playsound
>> étant appelée, le son est joué à la création du bouton.
>>
>> Pour faire ce que tu veux, il faut:
>>
>> - Soit faire une fonction par son à jouer, sans paramètre, et passer le
>> nom de la fonction *sans parenthèses* à l'option command du bouton.
>> Exemple:
>> def playAaah():
>> playsound(path_sound, Aaah)
>> bou1=Button(f1, width =6,height=1,text='Aaah',command=playAaah)

>
> c'est quasi identique au code de départ mis à part le path_sound
> definie avant non ?


Si tu fais comme ça oui. Mais tu limites les erreurs de copier/coller
(cf ta fonction Cool dans ton post précédent )

>
>
>
>> - Soit utiliser lambda:
>> bou1=Button(f1, width =6,height=1,text='Aaah',command=lambda:
>> playsound(path_sound , Aaah))

>
>
>> Attention: ça pose souvent des problèmes d'espace de noms (grosso modo,
>> le lambda ne voit que les définitions globales, pas les locales)
>> alors j'ai ajouter :

>
> global Aaahh
>
> ainsi que le code lambda , il me dit que Aaahh n'est pas définit ..


global c'est le mal...

Avec le code que je t'ai proposé tu dois faire plutôt :

aaah_fun = lambda:playsound(path_sound , 'Aaah')
bou1=Button(f1, width =6,height=1,text='Aaah',command=aaah_fun)
  Réponse avec citation
Vieux 24/08/2007, 14h21   #33
Jerome
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Lire un sons en python

firelink.east@gmail.com wrote:
> On 24 août, 14:40, "Eric Brunel" <see.signat...@no.spam> wrote:
>> On Fri, 24 Aug 2007 14:27:21 +0200, <firelink.e...@gmail.com> wrote:
>>
>> [snip]
>>
>>> lorsque je met le code , le son se joue dès le lancement , et
>>> lorsqu'on click sur le bouton il ne se joue pas du tout
>>> par exemple :
>>> root.title("Foule controle")
>>> root.geometry("157x138")
>>> f1 = Frame(root, width=78 , height= 138, bg="",bd=4 )
>>> f1.pack(side = LEFT)
>>> bou1=Button(f1, width =6,height=1,
>>> text='Aaah',command=playsound(path_sound , Aaah)

>> A part qu'il manque une parenthèse fermante - merci de faire un
>> copier/coller du *vrai* code, et pas de le réécrire... -,

>
> c'est un mauvais copier / coller vers le newsgroup , les parenthèses y
> sont dans le code ..
>
> le comportement
>> que tu vois est tout à fait normal: quand tu crées le bouton, tu
>> *appelles* la fonction playsound en lui passant les paramètres path_sound
>> et Aaah, puis tu affectes la valeur *renvoyée* par la fonction à l'option
>> command du bouton. Vu que la fonction ne renvoie probablement rien, donc
>> None, tu as un bouton qui ne fait rien. Par contre, la fonction playsound
>> étant appelée, le son est joué à la création du bouton.
>>
>> Pour faire ce que tu veux, il faut:
>>
>> - Soit faire une fonction par son à jouer, sans paramètre, et passer le
>> nom de la fonction *sans parenthèses* à l'option command du bouton.
>> Exemple:
>> def playAaah():
>> playsound(path_sound, Aaah)
>> bou1=Button(f1, width =6,height=1,text='Aaah',command=playAaah)

>
> c'est quasi identique au code de départ mis à part le path_sound
> definie avant non ?


Si tu fais comme ça oui. Mais tu limites les erreurs de copier/coller
(cf ta fonction Cool dans ton post précédent )

>
>
>
>> - Soit utiliser lambda:
>> bou1=Button(f1, width =6,height=1,text='Aaah',command=lambda:
>> playsound(path_sound , Aaah))

>
>
>> Attention: ça pose souvent des problèmes d'espace de noms (grosso modo,
>> le lambda ne voit que les définitions globales, pas les locales)
>> alors j'ai ajouter :

>
> global Aaahh
>
> ainsi que le code lambda , il me dit que Aaahh n'est pas définit ..


global c'est le mal...

Avec le code que je t'ai proposé tu dois faire plutôt :

aaah_fun = lambda:playsound(path_sound , 'Aaah')
bou1=Button(f1, width =6,height=1,text='Aaah',command=aaah_fun)
  Réponse avec citation
Vieux 24/08/2007, 14h31   #34
Laurent Pointal
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Lire un sons en python

Jerome a écrit :
> firelink.east@gmail.com wrote:
>>> En général je fais quelque chose comme ça personnellement :
>>>
>>> script_dir = sys.path[0]
>>> my_path = './datas/file.png'
>>>
>>> my_path = script_dir + my_path[1:].replace('/', os.sep)

>>
>> pas tout saisi le point ne désigne pas un répértoire caché ? sans
>> point cela désignerait la racine ..
>>

>
> le point désigne le répertoire courant mais c'est surtout une syntaxe
> que je suis, j'aurais tout aussi bien pu mettre 'local://' à la place.
>
> En gros tu peux définir tes chemins localement par rapport à
> l'emplacement du script que tu lances et remplacer ce '.' par le
> 'sys.path[0]'. Cela te donne un chemin global correct que tu peux
> utiliser pendant toute l'exécution du programme.


modulo qu'il ne modifie pas le répertoire courant au cours de
l'exécution... il vaut mieux utiliser dès l'initialisation du script
abspath() pour transformer le répertoire relatif en répertoire absolu et
être tranquille par la suite.

Voir aussi la variable __file__ qui contient le nom du fichier module
courant (je la préfère à sys.argv[0]).

Pour tester:

import sys
from os.path import abspath

print sys.argv[0]
print abspath(sys.argv[0])
print __file__
print abspath(__file__)



Enfin, comme ça a déjà été dit, préférer de loin l'utilisation des
fonctions join, split, basename, dirname... du module os.path plutôt que
de faire des concaténations de . / \ à la mano. C'est plus portable,
plus propre, et moins sujet à erreurs.
Cf http://docs.python.org/lib/module-os.path.html


A+

Laurent.

  Réponse avec citation
Vieux 24/08/2007, 14h31   #35
Laurent Pointal
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Lire un sons en python

Jerome a écrit :
> firelink.east@gmail.com wrote:
>>> En général je fais quelque chose comme ça personnellement :
>>>
>>> script_dir = sys.path[0]
>>> my_path = './datas/file.png'
>>>
>>> my_path = script_dir + my_path[1:].replace('/', os.sep)

>>
>> pas tout saisi le point ne désigne pas un répértoire caché ? sans
>> point cela désignerait la racine ..
>>

>
> le point désigne le répertoire courant mais c'est surtout une syntaxe
> que je suis, j'aurais tout aussi bien pu mettre 'local://' à la place.
>
> En gros tu peux définir tes chemins localement par rapport à
> l'emplacement du script que tu lances et remplacer ce '.' par le
> 'sys.path[0]'. Cela te donne un chemin global correct que tu peux
> utiliser pendant toute l'exécution du programme.


modulo qu'il ne modifie pas le répertoire courant au cours de
l'exécution... il vaut mieux utiliser dès l'initialisation du script
abspath() pour transformer le répertoire relatif en répertoire absolu et
être tranquille par la suite.

Voir aussi la variable __file__ qui contient le nom du fichier module
courant (je la préfère à sys.argv[0]).

Pour tester:

import sys
from os.path import abspath

print sys.argv[0]
print abspath(sys.argv[0])
print __file__
print abspath(__file__)



Enfin, comme ça a déjà été dit, préférer de loin l'utilisation des
fonctions join, split, basename, dirname... du module os.path plutôt que
de faire des concaténations de . / \ à la mano. C'est plus portable,
plus propre, et moins sujet à erreurs.
Cf http://docs.python.org/lib/module-os.path.html


A+

Laurent.

  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 20h07.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,20738 seconds with 18 queries