Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/06/2006, à 16:24

Francescu

programme python

J'ai créer ce petit programme en python pour pouvoir écouter mais radio tranquilement sans etre obliger de lancer un logiciel lourd

#!/usr/bin/python
#*-* coding: cp850 *-*
import os
import signal
from Tkinter import *
import tkMessageBox
root=Tk()

#variables
radioindex = 0,1,2,3,4,5
pidActuel = 0
strTitel = 'Lecture en cour'
radiov ='Lecture de Cherie FM', 'Lecture de Fun-Radio', 'Lecture de Nrj', 'Lecture de Nostalgie', 'Lecture de Le Mouv', 'Lecture de Alta Frequenza', 'Lecture de Radio Corti Vivu', 'Lecture de RCFM', 'Lecture de Radio Fg', 'Lecture de radio Fg Underground', 'Lecture de www.di.fm' ;

root.title("Radio v0.4 By Francescu") 
root.resizable(width=False, height=False) #empèche le redimensionement de la fenetre

#fonction fenetrelecture
def lecture():
   root3=Tk()
   root3.title(strTitel)
   root3.resizable(width=False, height=False) #empèche le redimensionement de la fenetre   
   texte=Label(root3, text=radiov[radioindex],font=('Arial', 12, 'italic bold'), fg="red")
   texte.pack(side=TOP)

#definition fonctions
def fermerMplayer():
   
   global pidActuel

   if pidActuel != 0:
      os.kill(pidActuel, signal.SIGTERM)
      pidActuel = 0

def Xboutonfonction():
    if tkMessageBox.askokcancel("Quit", "Etes Vous sur de vouloir quitter ?"):
        exitfonction()
root.protocol("WM_DELETE_WINDOW", Xboutonfonction)

def exitfonction():
     
   fermerMplayer()
   
   root.quit()


#fonction de création de la fenetre about
def creationroot2():
   root2=Tk()
   root2.title("About")
   root2.resizable(width=False, height=False) #empèche le redimensionement de la fenetre   
   texte=Label(root2, text="Merci d'utiliser Radio v0.4 by Francescu",font=    ('Arial', 12, 'italic bold'), fg="red")
   texte.pack(side=TOP)
   texte=Label(root2, text="Pour signaler un bug ou pour toute remarque et surtout si vous avez apporter des améliorations au programme : Francescu@freesurf.fr",font=    ('Arial', 12, 'italic bold'), fg="red")
   texte.pack(side=TOP)


#fonction boutons

def cheriefonction():
   global radioindex   
 
   radioindex = 0
   
   lecture()
   
   global pidActuel
   
   fermerMplayer()
   
   pidActuel = os.spawnl(os.P_NOWAIT, "/usr/bin/mplayer","mplayer", "mms://vip1.yacast.fr/encodercheriefm")

def funfonction():   
   global radioindex
   
   radioindex = 1
   
   lecture()
   
   global pidActuel   
   
   fermerMplayer()
   
   pidActuel = os.spawnl(os.P_NOWAIT, "/usr/bin/mplayer","mplayer", "mms://vip2.yacast.fr/encoderfun")

def nrjfonction():
   global radioindex

   radioindex = 2

   lecture()

   global pidActuel   

   fermerMplayer()

   pidActuel = os.spawnl(os.P_NOWAIT, "/usr/bin/mplayer","mplayer", "mms://vip1.yacast.fr/encodernrj")   

def nostalgiefonction():
   global radioindex

   radioindex = 3

   lecture()

   global pidActuel   

   fermerMplayer()

   pidActuel = os.spawnl(os.P_NOWAIT, "/usr/bin/mplayer","mplayer", "mms://vip1.yacast.fr/encodernostalgie")   

def lemouvfonction():
   global radioindex

   radioindex = 4

   lecture()
   
   global pidActuel   

   fermerMplayer()

   pidActuel = os.spawnl(os.P_NOWAIT, "/usr/bin/mplayer","mplayer", "mms://viptvr.yacast.fr/encoderlemouv")   

def altafonction():
   global radioindex

   radioindex = 5
   
   lecture()

   global pidActuel   

   fermerMplayer()

   pidActuel = os.spawnl(os.P_NOWAIT, "/usr/bin/mplayer","mplayer", "http://alta-frequenza.streamfr.com:8061/listen.pls")

def rcvfonction():
   global radioindex

   radioindex = 6
   
   lecture()

   global pidActuel
   
   fermerMplayer()

   pidActuel = os.spawnl(os.P_NOWAIT, "/usr/bin/mplayer","mplayer", "rtsp://a1251.l252147863.c2521.e.lr.akamaistream.net/live/D/1251/2521/666/reflector:47863?site")   

def rcfmfonction():
   global radioindex

   radioindex = 7

   lecture()

   global pidActuel   

   fermerMplayer()

   pidActuel = os.spawnl(os.P_NOWAIT, "/usr/bin/mplayer","mplayer", "mms://wm02.tv-radio.com/fbfrequenzamora-16k?site")   

def fgfonction():
   global radioindex

   radioindex = 8

   lecture()

   global pidActuel   

   fermerMplayer()

   pidActuel = os.spawnl(os.P_NOWAIT, "/usr/bin/mplayer","mplayer", "http://87.98.197.99:8000")   

def fgufonction():
   global radioindex

   radioindex = 9

   lecture() 
   
   global pidActuel
   
   fermerMplayer()
   
   pidActuel = os.spawnl(os.P_NOWAIT, "/usr/bin/mplayer","mplayer", "http://ufg.impek.tv")   

def difonction():
   global radioindex

   radioindex = 10
   
   lecture()
   
   global pidActuel   

   fermerMplayer()
   
   pidActuel = os.spawnl(os.P_NOWAIT, "/usr/bin/mplayer","mplayer", "http://www.di.fm/mp3/house.pls")

#representation graphique
##bouton national
texte=Label(root, width=17, height=2, text="Radio National",font=('Arial', 12, 'italic bold'), fg="red")
texte.pack(side=TOP)

bouton=Button(root, width=17, height=1, relief=RIDGE, text=' Cherie FM ', command=cheriefonction)
bouton.pack(side=TOP)

bouton2=Button(root, width=17, height=1,relief=RIDGE, text=' Fun-Radio ', command=funfonction)
bouton2.pack(side=TOP)

bouton3=Button(root, width=17, height=1,relief=RIDGE, text=' NrJ ', command=nrjfonction)
bouton3.pack(side=TOP)

bouton4=Button(root, width=17, height=1,relief=RIDGE, text=' Nostalgie ', command=nostalgiefonction)
bouton4.pack(side=TOP)

bouton5=Button(root, width=17, height=1,relief=RIDGE, text=' Le Mouv ', command=lemouvfonction)
bouton5.pack(side=TOP)

##bouton corse
texte=Label(root, width=17, height=2, text="Radio Corse", font=('Arial', 12, 'italic bold'), fg="red")
texte.pack(side=TOP)

bouton6=Button(root, width=17, height=1,relief=RIDGE, text=' Alta Frequenza ', command=altafonction)
bouton6.pack(side=TOP)

bouton7=Button(root, width=17, height=1,relief=RIDGE, text='Radio Corti Vivu', command=rcvfonction)
bouton7.pack(side=TOP)

bouton8=Button(root, width=17, height=1,relief=RIDGE, text='RCFM', command=rcfmfonction)
bouton8.pack(side=TOP)

##bouton house
texte=Label(root, width=17, height=2, text="Radio House-Music",font=('Arial', 12, 'italic bold'), fg="red")
texte.pack(side=TOP)

bouton9=Button(root, width=17, height=1,relief=RIDGE, text='Radio FG', command=fgfonction)
bouton9.pack(side=TOP)

bouton10=Button(root, width=17, height=1,relief=RIDGE, text='Radio FG Underground', command=fgufonction)
bouton10.pack(side=TOP)

bouton11=Button(root, width=17, height=1,relief=RIDGE, text='WwW.di.fm : House', command=difonction)
bouton11.pack(side=TOP)

texte=Label(root, width=17, height=2, text="",font=('Arial', 12, 'italic bold'), fg="red")
texte.pack(side=TOP)

##bouton about
bouton13=Button(root, width=17, height=1,relief=RIDGE, text='About', command=creationroot2)
bouton13.pack(side=TOP)

##bouton arreterlecture
bouton13=Button(root, width=17, height=1,relief=RIDGE, text='Stop lecture', command=fermerMplayer)
bouton13.pack(side=TOP)

##bouton kitter
bouton12=Button(root, width=17, height=1,relief=RIDGE, text='Quitter', command=Xboutonfonction)
bouton12.pack(side=TOP)

#texte version
texte=Label(root, height=3, text="Radio v0.4 By Francescu wink", font=('Arial', 12, 'italic bold'), fg="Blue")
texte.pack(side=BOTTOM)

root.mainloop()



le programme est fonctionel mais j'ai un problème au niveau de l'affichage de la radio en cour de lecture.
J'ai créer une fenetre root3 avec tous ce qu'il faut pour que dans la fenetre s'affiche la radio en cour de lecture, le seul problème est que quand je clique sur un autre bouton une autre radio ce lance jusque la normal mais chose anormal le programme ne ferme pas la fenetre root3 il en crée une seconde

Cela fait que je me retrouve avec deux fenetre une avec un texte de la lecture précédente et l'autre avec le texte de la lecture en cour

Je voudrai donc que le programme modifie juste le texte dans la fenetre et ne crée pas une seconde fenetre

j'espère que tous a été clair ...


MacBook Pro with Ubuntu of Course !! ;)

Hors ligne

#2 Le 15/06/2006, à 17:45

node

Re : programme python

Je ne connais pas Tkinter, donc, je ne peux pas t'aider pour ce problème.

Par ailleurs, mes remarques :
* Il manque l'affichage du message d'erreur si mplayer n'est pas détecté. Au moins dans le terminal, ce serait bien (surtout si tu comptes le distribuer).
* Pas la peine de demander une confirmation pour quitter.
* Renommer About en À propos
* Renommer Stop lecture en Éteindre la radio
* Griser Stop lecture lorsqu'il n'y a pas de radio en écoute.
* Bouton Stop lecture devrait faire disparaître la (fameuse) fenêtre root3
* Quelle est la licence du logiciel ?
* C'est une bonne idée

Sinon, en combien de temps tu as développé ce logiciel, et quelle est ton expérience de python ? C'est pour me faire une idée de la puissance/facilité de Python.

Hors ligne

#3 Le 15/06/2006, à 18:12

Francescu

Re : programme python

ba j'était débutant quand j'ai commencer le programme et sa doit faire un ou deux mois que je suis dessus... j'ai pas mal galérer o debut pour comprendre le fonctionement mais la sa va un peut mieu.

Mais il y a encore certain truc que j'arrive pas a comprendre du style ce ke je vien de poster j'ai tous essayer pour pouvoir actualiser la fenetre root3 en fonction de la radio en lecture mais bon vu que je suis débutant je connais pas tous

Donc je suis ouvert a toute aide et toute remarque. Pour la licence a vrai dire j'ai meme pas réfléchi a sa c juste un programme que j'ai créer pour me faciliter la vie si sa peut la faciliter a d'autre personne tant mieux

Dernière modification par Francescu (Le 15/06/2006, à 18:17)


MacBook Pro with Ubuntu of Course !! ;)

Hors ligne

#4 Le 24/06/2006, à 07:38

Francescu

Re : programme python

Je voit que mon petit programme n'interresse pas grand monde sad


MacBook Pro with Ubuntu of Course !! ;)

Hors ligne

#5 Le 24/06/2006, à 08:18

sx64

Re : programme python

Francescu a écrit :

Je voit que mon petit programme n'interresse pas grand monde sad

Il faut sans doute trouver un forum français à propos de Python !!

Hors ligne

#6 Le 24/06/2006, à 09:20

Goomy

Re : programme python

Bonjour,
ton ptit prog m interesse, mais je ne sais pas comment le compiler. J ai pas l habitude du python.
Si il y a une commande sous la console pour compiler le python, c'est laquelle ?
Merci et bonne continuation.

Hors ligne

#7 Le 24/06/2006, à 10:13

Donk

Re : programme python

Le python ne se compile pas, tu recopies le code dans un fichier texte auquel tu donnes les droits d'exécution, et tu l'exécutes comme un simple fichier script

Hors ligne

#8 Le 24/06/2006, à 10:24

gapz

Re : programme python

En fait quand tu exécute ton script tu génère un fichier avec du python 'pseudo compiler' je crois qu'on dis comme ça. C'est le fichier avec l'extension .pyc , bon cela ne sert à rien ormis que c'est plus rapide et que c'est en closed source (baaah :-P)

sx64 a écrit :
Francescu a écrit :

Je voit que mon petit programme n'interresse pas grand monde sad

Il faut sans doute trouver un forum français à propos de Python !!

Tu as l'afpy qui est pas mal pour ça : http://www.afpy.org/python

Dernière modification par gapz (Le 24/06/2006, à 10:30)


Real programmers code in binary :: http://gapz.tuxfamily.org

Hors ligne

#9 Le 24/06/2006, à 12:42

Goomy

Re : programme python

ok c'est bon , j'ai réussis a le lancer tongue.
Par contre j'ai pas de son hmm
il faut des paquets spéciaux ?

Hors ligne

#10 Le 24/06/2006, à 13:12

Bzh

Re : programme python

Oui mplayer !!!

Avec une petite interface en gtk, ce ne serait que du bonheur !!!

Il ne manque que quelques radios bretonnes big_smile !!!

Mais il est propre...

Hors ligne

#11 Le 24/06/2006, à 13:58

Francescu

Re : programme python

ba dsl pour les radios bretonne mais j'ai mis les radio de chez moi (corse) wink a chacun dajouter les sienne parcontre sa serai peut etre bien de pouvoir faire une interface pour ajouter les radio plustot que de faire sa manuelement dans le script non ?

Enfin tous d'abord pour que le programme soi vraiment fonctionel et fini il faudrait que je règle le problème de l'affichage de la fenetre qui permet de savoir quel radio on li

Et pour pourvoir faire fonctionner le programme c sur qu'il faut mplayer puisque en faite ce programme ce sert de maplayer pour lire les radio

Dernière modification par Francescu (Le 24/06/2006, à 14:03)


MacBook Pro with Ubuntu of Course !! ;)

Hors ligne

#12 Le 24/06/2006, à 17:50

bergi

Re : programme python

j'ai rapidement parcourut ton code, premiere chose :
Pq faire une fonction pour lancer chaque radio ! Fait une seule fonction à laquelle tu passe le nom et l'url de la radio en parametre tu va gagner de la place....

Un petit "bug" tu na pas prevu la fermeture du son lorsque l'on clique sur la croix.

Sinon pour ton probleme es tu sur que la fonction os.kill marche comme cela ?
Apparament tu met pidactuel a 1 puis tu le transment à os.kill pour le mettre ensuite à 0. Mais je pense pas que le pid a transmettre soit designe par toi, tu doit le rechercher, comme un kill en console.
Mais n'y a t'il pas une solution plus propre que de kill la fenetre, comme root3.quit() ?

Dernière modification par bergi (Le 24/06/2006, à 17:51)

Hors ligne

#13 Le 24/06/2006, à 18:17

Francescu

Re : programme python

ba dison que j'ai créer une fonction pour chaque radio parceque je suis débutant en python et que c le moyen le plus simple que j'ai trouver, c sur k'une fonction avec juste a remplacer ladresse et le nom de la radio orai été plus cour mais je ne c'est pas comment réaliser cette fonction...

Pour le clique sur la croix c fonction est réalisé elle marche chez moi ....

et pour la fenetre root3 j'ai tester la fonction root3.quit() mais elle ne marche pas a moin que je l'ai pas placer au bonne endroit en faite la chose la plus simple pour moi serait de créer une seule fenetre root 3 avec juste les texte qui change en fonction des nom de radio

mais je v me répéter je suis débutant donc je comprend pas encore tout....


MacBook Pro with Ubuntu of Course !! ;)

Hors ligne

#14 Le 24/06/2006, à 18:57

kaworu

Re : programme python

python est un language interprété (comme bash) dont la machine virtuel est écrite en C (je crois). Il existe un compilateur écrit en Java qui permet de générer du bytecode java (!!!) à partir de source python (jPython). Théoriquement ce bytecode java sera plus rapide car compilé et java (qui a un typage fort par rapport à pyhton qui à un typage dynamique), et de toute façon, décompiler du java c'est simple (et plus rapide que de le compiler.. lol).

EDIT: ton programme marche impec wink

Dernière modification par kaworu (Le 24/06/2006, à 19:04)


"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."

Hors ligne

#15 Le 24/06/2006, à 19:12

Francescu

Re : programme python

Avant de chercher la rapidité je me concentre surtout a essayer de faire un programme le plus fonctionel possible et fini ...

Surtout qu'il en est loin ...

Mais merci pour tes précisions sa me permettra peut etre de le faire plus tard smile

Dernière modification par Francescu (Le 24/06/2006, à 19:13)


MacBook Pro with Ubuntu of Course !! ;)

Hors ligne

#16 Le 25/06/2006, à 11:19

aleph

Re : programme python

> Théoriquement ce bytecode java sera plus rapide car compilé et java (qui a un typage fort par rapport à pyhton qui à un typage dynamique), et de toute façon, décompiler du java c'est simple (et plus rapide que de le compiler.. lol).

Ce n'est pas correcte et cela n'a d'ailleurs aucun sens. Le concept de variables typées et l'allocation dynamique du typage sont deux concepts différents. (Erreur très fréquente).

Il y a des langages typés et dynamiquement typés.
Il y a des langages typés et non dynamiquement typés.
Il y a des langages non typés et dynamiquement typés.
Il y a des langages non typés et non dynamiquement typés.

En Java, les variables ont un type et la déclaration du type est non dynamique, idem pour le C ou le Pascal.
En Python, les variables ont un type et le typage est dynamique.

#17 Le 25/06/2006, à 11:24

Francescu

Re : programme python

oula cela me dépasse complètement dsl mais j'ai pas tou a fait comprit ....


MacBook Pro with Ubuntu of Course !! ;)

Hors ligne

#18 Le 25/06/2006, à 11:45

aleph

Re : programme python

Deux exemples de fonctions

en C:

int power(int base, int n) {...}

dans cette fonction base et n sont déclarés comme étant des variables de type entier (non typées dynamiquement).

L'appel de la fonction

power(2, 5) est ok

par contre l'appel de la fonction

power(2.5, 5)

génére une erreur.


en Python:

der power(base, n):
    ...

base et n sont déclarés, main n'ont pour le moment aucun type.
Ce n'est que lors de l'appel de la fonction que base et n reçoivent un type.

Exemple:

#définition de la fonction power qui affichera les types de base et n.
def power(base, n):
    print type(base)
    print type(n)
   
un appel de

power(2, 5)

renvoie
<type 'int'>
<type 'int'>

et un appel de

power(2.5, 5)

renvoie
<type 'float'>
<type 'int'>

autre exemple:

power('abc', 5)

renvoie

<type 'str'>
<type 'int'>

Les variables Python on bien un type. Il existe une multitude de variantes en Python pour
tester le type des variables, heureusement !

#19 Le 25/06/2006, à 11:47

bergi

Re : programme python

puis au lieu d'etaler votre science essayer de repondre au probleme...

sinon :

pidActuel = os.spawnl(os.P_NOWAIT, "/usr/bin/mplayer","mplayer", "mms://vip1.yacast.fr/encodercheriefm")

Recupere l'id de mplayer et donc par la suite tu kill mplayer mais en aucun cas la fenetre precdamment ouverte.

quand a une fonction unique tu peut essayer de passe un parametre :

fonctionradio(adressedelaradio)

PS : sans vouloir contourné le probleme ce ne serait pas mieux d'avoir une zone dans la fenetre principal nous indiquant la radio que l'on ecoute avoir deux fenetre perso j'aime pas trop surtout pour juste affiche le nom de la radio ecoute.

Dernière modification par bergi (Le 25/06/2006, à 11:57)

Hors ligne

#20 Le 25/06/2006, à 12:44

Francescu

Re : programme python

ba j'avait penser comme toi bergi mais le problème reste le meme en mettant un texte qui change a chaque lecture de radio dans la fenetre je me retrouve avec plusieur texte, car le programme me crée un texte a chaque fois au lieu de remplacer le précédent par le nouveau


MacBook Pro with Ubuntu of Course !! ;)

Hors ligne

#21 Le 25/06/2006, à 15:10

bipede

Re : programme python

J'ai retranscrit ton code en wx.python (à la place de Tkinter) et j'utilise la classe wx.Dialog pour afficher la radio en écoute.
La fenêtre est affichée en mode modal, et c'est en cliquant sur terminer que tu arrêtes le stream, et que tu fermes la fenêtre.
Tu testes, et tu me dis si ça te convient.

#! /usr/bin/env python
#-*- coding: utf-8 -*-

import wx
import os
import signal

class APropos(wx.Dialog):
	def __init__(self, parent, police):
		wx.Dialog.__init__(self, parent, -1, title = "A propos de Radio")
		sizer = wx.BoxSizer(wx.VERTICAL)
		label = wx.StaticBox(self, -1, "Merci d'utiliser Radio v0.4 by Francescu", style = wx.ALIGN_CENTER)
		label.SetOwnFont(police)
		label.SetForegroundColour(wx.RED)
		sizer.Add(label, 0, wx.ALL|wx.ALIGN_CENTRE, 5)
		label = wx.StaticBox(self, -1, "Pour signaler un bug ou pour toute remarque," , style = wx.ALIGN_CENTRE)
		label.SetOwnFont(police)
		label.SetForegroundColour(wx.RED)
		sizer.Add(label, 0, wx.ALL|wx.ALIGN_CENTRE, 5)
		label = wx.StaticBox(self, -1, "et surtout si vous avez apporté des améliorations au programme :" , style = wx.ALIGN_CENTRE)
		label.SetOwnFont(police)
		label.SetForegroundColour(wx.RED)
		sizer.Add(label, 0, wx.ALL|wx.ALIGN_CENTRE, 5)
		label = wx.StaticBox(self, -1, "Francescu@freesurf.fr",style = wx.ALIGN_CENTER)
		label.SetOwnFont(police)
		label.SetForegroundColour(wx.RED)
		sizer.Add(label, 0, wx.ALL|wx.ALIGN_CENTRE, 5)
		bouton = wx.Button(self, wx.ID_OK, "Ok")
		sizer.Add(bouton, 0, wx.ALIGN_CENTRE)
		self.SetSizer(sizer)
		self.Fit()

class Ecoute(wx.Dialog):
	def __init__(self, parent, radio, police):
		wx.Dialog.__init__(self, parent, -1, title = "En ecoute")
		sizer = wx.BoxSizer(wx.VERTICAL)
		message = wx.StaticText(self, -1, radio, size = (150,-1), style = wx.ALIGN_CENTRE)
		message.SetOwnFont(police)
		message.SetForegroundColour(wx.RED)
		sizer.Add(message, 1, wx.ALIGN_CENTRE|wx.ALL, 5)
		bouton = wx.Button(self, wx.ID_OK, "Terminer")
		sizer.Add(bouton, 0, wx.ALIGN_CENTRE|wx.ALL, 5)
		self.SetSizer(sizer)
		self.Fit()
			
class MesRadios(wx.Frame):
	radios = [['Radios Nationales',['Cherie FM', 'Fun-Radio', 'Nrj', 'Nostalgie', 'Le Mouv']],
				    ['Radios Corses', ['Alta Frequenza', 'Radio Corti Vivu', 'RCFM']],
				    ['Radios House-Music', ['Radio Fg', 'Fg Underground', 'www.di.fm']]]
	urlS = {'Cherie FM':'mms://vip1.yacast.fr/encodercheriefm',
				'Fun-Radio':'mms://vip2.yacast.fr/encoderfun', 
				'Nrj':'mms://vip1.yacast.fr/encodernrj',
				'Nostalgie':'mms://vip1.yacast.fr/encodernostalgie',
				'Le Mouv':'mms://viptvr.yacast.fr/encoderlemouv',
				'Alta Frequenza':'http://alta-frequenza.streamfr.com:8061/listen.pls',
				'Radio Corti Vivu':'rtsp://a1251.l252147863.c2521.e.lr.akamaistream.net/live/D/1251/2521/666/reflector:47863?site',
				'RCFM':'mms://wm02.tv-radio.com/fbfrequenzamora-16k?site',
				'Radio Fg':'http://87.98.197.99:8000',
				'Fg Underground':'http://ufg.impek.tv',
				'www.di.fm':'http://www.di.fm/mp3/house.pls'}

	def __init__(self, titre):
		wx.Frame.__init__(self, parent = None, id = -1, title = titre)
		self.police = wx.Font(12, wx.FONTFAMILY_SWISS, wx.FONTSTYLE_ITALIC, wx.FONTWEIGHT_BOLD)		 
		sizerPrinc = wx.BoxSizer(wx.VERTICAL)
		for x in range(3):
			sizer = wx.BoxSizer(wx.VERTICAL)
			sizer.Add((0,0),1)
			label = wx.StaticText(self, -1, self.radios[x][0], style = wx.ALIGN_CENTRE)
			label.SetForegroundColour(wx.RED)
			label.SetOwnFont(self.police)
			sizer.Add(label, 2, wx.ALIGN_CENTRE)
			sizer.Add((0,0),1)
			for texte in self.radios[x][1]:
				bouton = wx.Button(self, -1, texte, size = (150, -1))
				self.Bind(wx.EVT_BUTTON, self.ChoixRadio, bouton)
				sizer.Add(bouton, 0, wx.ALIGN_CENTRE|wx.ALL, 2)
			sizerPrinc.Add(sizer, 0, wx.ALL|wx.ALIGN_CENTRE, 5)
		sizer = wx.BoxSizer(wx.VERTICAL)
		bouton = wx.Button(self, -1, "A propos...", size = (150, -1))
		self.Bind(wx.EVT_BUTTON, self.About, bouton)
		sizer.Add(bouton, 0, wx.ALIGN_CENTRE|wx.ALL, 2)
		bouton = wx.Button(self, -1, "Quitter", size = (150, -1))
		self.Bind(wx.EVT_BUTTON, self.Quitter, bouton)
		sizer.Add(bouton, 0, wx.ALIGN_CENTRE|wx.ALL, 2)
		sizerPrinc.Add(sizer, 0, wx.ALL|wx.ALIGN_CENTRE, 15)
		label = wx.StaticText(self, -1, "Radio v0.4 By Francescu wink", style = wx.ALIGN_CENTRE, size = (300,-1))
		label.SetOwnFont(self.police)
		label.SetForegroundColour(wx.BLUE)
		sizerPrinc.Add(label, 0, wx.ALL|wx.ALIGN_CENTRE, 10)
			
		self.SetSizer(sizerPrinc)
		self.Fit()
		self.Centre()

	def Quitter(self, evt):
		self.Destroy()

	def About(self, evt):
		dlg = APropos(self, self.police)
		dlg.ShowModal()
		dlg.Destroy()
	
	def ChoixRadio(self, evt):
		radio = self.FindWindowById(evt.GetId()).GetLabel()
		url = self.urlS[radio]
		pidActuel = os.spawnl(os.P_NOWAIT, "/usr/bin/mplayer","mplayer", url)
		dlg = Ecoute(self, radio, self.police)
		dlg.ShowModal()
		os.kill(pidActuel, signal.SIGTERM)
		dlg.Destroy()
		
class MonApp(wx.App):
	def OnInit(self):
		f = MesRadios("Radio v0.4")
		f.Show(True)
		self.SetTopWindow(f)
		return True
	
app = MonApp()
app.MainLoop()

Dernière modification par bipede (Le 25/06/2006, à 15:13)


Desktop: MSI - Intel® Core™ i5-3330 CPU @ 3.00GHz × 4 - RAM 8 go- Kubuntu 21.04 - Système sur SSD 64 Go - /home sur HDD 500 Go.
Laptop: DELL Inspiron-15 3567 - Intel® Core™ i5-7200 CPU @ 2.50GHz × 4 - RAM 8 go - HDD 1 To - Ubuntu 20.10 avec /home séparé.

Mon site: Les contributions du bipède

Hors ligne

#22 Le 26/06/2006, à 13:47

Francescu

Re : programme python

il faut installer wxpython pour faire fonctionner le programme ?


MacBook Pro with Ubuntu of Course !! ;)

Hors ligne

#23 Le 26/06/2006, à 14:28

gapz

Re : programme python

Oui il faut que tu installes les librairies necessaire au bon fonctionnement de wxpython.
Je ne serais plus te dire les quelles de tête mais elle sont facilement retrouvable.


Real programmers code in binary :: http://gapz.tuxfamily.org

Hors ligne

#24 Le 27/06/2006, à 10:49

Francescu

Re : programme python

c'est pas mal comme interphace bipede mais le truc de clicker sur lautre fenetre pour areter sa me parai un pe lourd

enfin c sur que c un moyen détourner pour résoudre mon problème de fenetre, mais je préfèrerai que la fenetre changer d'elle meme le nom de la radio a chaque clique sur une radio et pas qu'on soit obliger a chaque foi de fermer la fenetre en cliquant sur terminer ....

Dernière modification par Francescu (Le 27/06/2006, à 10:59)


MacBook Pro with Ubuntu of Course !! ;)

Hors ligne

#25 Le 27/06/2006, à 14:38

kaworu

Re : programme python

aleph a écrit :

Ce n'est pas correcte et cela n'a d'ailleurs aucun sens. Le concept de variables typées et l'allocation dynamique du typage sont deux concepts différents. (Erreur très fréquente).

Il y a des langages typés et dynamiquement typés.
Il y a des langages typés et non dynamiquement typés.
Il y a des langages non typés et dynamiquement typés.
Il y a des langages non typés et non dynamiquement typés.

En Java, les variables ont un type et la déclaration du type est non dynamique, idem pour le C ou le Pascal.
En Python, les variables ont un type et le typage est dynamique.

Je me suis mal exprimé merci pour ta rectification ^__^
Il me semble que le fait d'avoir des variables dynamiquement typés rend le programme plus lent (j'avais lu ça qq part et c'est que je voulais dire).

Il y a des langages typés et dynamiquement typés.   ---> Python
Il y a des langages typés et non dynamiquement typés. ---> Java
Il y a des langages non typés et dynamiquement typés. ---> Bash
Il y a des langages non typés et non dynamiquement typés. ---> ???

Quel language est non-typé et non-dynamiquement typé ?


"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."

Hors ligne