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 10/07/2006, à 21:48

david breizh

python pygtk

bonjour j'essai de faire un programme python avec pygtk pour lire les radios du web.

je voudrais qu'en fait lieu de créer plusieurs fois une fonction player à chaques boutons cliquer n'en avoir qu'un en fait et que le changements de l'url se fasse en fonction du bouton cliquez.

je poste mon premier essai ou je bloque depuis un moment (c'est le début je signal):

#!/usr/bin/env python

# importation de gtk et pygtk
import os
import signal
import pygtk
pygtk.require('2.0')
import gtk

#variables de début
pidActuel = 0
url = 'mms://vip1.yacast.fr/encodernrj'

# définition de la classe bb
class bb: 

	# fonction de mplayer
	def player(self, evt):
	    global pidActuel

	    pidActuel = os.spawnl(os.P_NOWAIT, "/usr/bin/mplayer", "mplayer", url)

	# fonction pour stopper la lecture de la radio
	def stop(self, widget):
	    global pidActuel

	    if pidActuel != 0:
               os.kill(pidActuel, signal.SIGTERM)
               pidActuel = 0	
	
	# fonction a deux bal
	def salut(self, widget, donnees):
	    print "Salut ! - Clic sur le %s" % donnees
	
	# fonction pour quiter le programme
	def evnmt_delete(self, widget, evenement, donnees=None):
            gtk.main_quit()
       	    return gtk.FALSE

	# fonction init
	def __init__(self):

        # Creation de la fenetre principale
            fenetre = gtk.Window(gtk.WINDOW_TOPLEVEL)

        # titre de la fenêtre principale
            fenetre.set_title("Radio on line !")

        # Ici on definit juste un gestionnaire pour le signal
        # delete_event (qui quittera GTK immediatement)
	    fenetre.connect("delete_event", self.evnmt_delete)

        # On fixe la largeur des bordures de la fenetre.
            fenetre.set_default_size(220 ,100)
	    fenetre.set_border_width(10)

        # création de la boite principale verticale
	    boite = gtk.VBox(gtk.FALSE, 0)

	# création de la boite1 et boite2 horizontale
	    boite1 = gtk.HBox(gtk.FALSE, 0)
	    boite2 = gtk.HBox(gtk.FALSE, 0)

        # Creation des différents boutons avec leurs étiquettes
	    bouton1 = gtk.Button("energy")
	    bouton2 = gtk.Button("stop lecture")

        # Lorsque on cliquera sur le bouton, la ligne suivante appellera la
        # methode employé avec la chaine comme argument.
            bouton1.connect("clicked", self.player)
	    bouton2.connect("clicked", self.stop)

        # placement du bouton1 dans la boite1
	    boite1.pack_start(bouton1, gtk.TRUE, gtk.TRUE, 0)
	    boite2.pack_start(bouton2, gtk.TRUE, gtk.TRUE, 0)

	# incorporation des deux boite dans la boite principale
	    boite.pack_start(boite1, gtk.TRUE, gtk.TRUE, 0)
	    boite.pack_start(boite2, gtk.TRUE, gtk.TRUE, 0)

        # N'oubliez pas cette etape, elle fait savoir a GTK que la preparation
        # de ce bouton est achevee et qu'il peut maintenant etre affiche
            fenetre.add(boite)
	    bouton1.show()
	    bouton2.show()
	    boite1.show()
	    boite2.show()
	    boite.show()
            fenetre.show()

def boucle():
    gtk.main()

if __name__ == "__main__":
    salut = bb()
    boucle()

ah ! du fin fond de la bretagne grâce au libre on se sent moins seul!
Vive le libre et toutes les distributions qui m'ont fait découvrir le monde de linux!

Hors ligne

#2 Le 10/07/2006, à 23:43

david breizh

Re : python pygtk

il n'y a aucun pro de python par là


ah ! du fin fond de la bretagne grâce au libre on se sent moins seul!
Vive le libre et toutes les distributions qui m'ont fait découvrir le monde de linux!

Hors ligne

#3 Le 11/07/2006, à 03:05

david breizh

Re : python pygtk

est bien le forum est vide de dévellopeurs ou quoi?

Dernière modification par david breizh (Le 11/07/2006, à 03:06)


ah ! du fin fond de la bretagne grâce au libre on se sent moins seul!
Vive le libre et toutes les distributions qui m'ont fait découvrir le monde de linux!

Hors ligne

#4 Le 11/07/2006, à 11:00

gapz

Re : python pygtk

J'ai le temps tout de suite de regarder à ton code, et je suis un nouvel utilisateur assez récent de pygtk, avant je fesais du wxpython.

La seule chose que je peux te proposer pour le moment c'est un bon liens tongue  Donc tu disposes d'une très bonne documentation (en anglais) via un rapide :

sudo apt-get install python-gtk2-tutorial

L'index ce trouve ici : file:///usr/share/doc/python-gtk2-tutorial/html/index.html

Voilà ;-)

PS : Si j'ai le temps je jeterais un coup d'oeil demain.... ;-)


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

Hors ligne

#5 Le 11/07/2006, à 13:34

mccricri

Re : python pygtk

Je ne suis pas spécialiste pyGtk, parce contre, je vois ce que tu veux faire, et ça me parait pas trop mal. Simplement parce que ça ne sera pas forcément simple de faire changer d'url à mplayer.
Le souci c'est le pilotage à distance d'un autre processus (ici mplayer) en pouvant lui passer des infos.

Et je ne sais pas si c'est faisable avec python et mplayer. Donc si dans la méthode player, tu faisait simplement un stop() du précédent pid puis tu redémarres un nouveau avec la nouvelle URL, ça devrait le faire.
Il y aura un petit temps de traitement avant de zapper de chaine, mais il n'y aura qu'un seul processus mplayer lancé à la fois.

Reste à faire une Liste de sélection avec plusieurs radios et prendre la chaine sélectionnée au click sur le boutton de zapping wink

Hors ligne

#6 Le 11/07/2006, à 17:02

david breizh

Re : python pygtk

justement c'est ça que je veux faire une liste d'url qui change suivant le bouton clicked c'est tout, avec une seul lecture à la fois comme tu dis mccricri mais je n'y arrive pas c'est faisable je l'ai vu sur un autre poste mais avec wxpython et je ne trouve pas le moyen de le transformer .


ah ! du fin fond de la bretagne grâce au libre on se sent moins seul!
Vive le libre et toutes les distributions qui m'ont fait découvrir le monde de linux!

Hors ligne

#7 Le 11/07/2006, à 17:30

benohite

Re : python pygtk

Salut,

Je ne connais pas python donc je me suis penché sur mplayer et j'ai trouvé un truc intéressant dans la doc:

3.2.3. Mode esclave

Le mode esclave vous permet de construire un frontend à MPlayer. Quand il est activé (avec -slave) MPlayer lit les commandes séparées par un saut de ligne (\n) depuis l'entrée par défaut (stdin). Les commandes sont documentées dans le fichier slave.txt.

Et bien sur dans la liste des commandes il y en a une qui colle

pt_step <value> [force]
    Go to the next/previous entry in the playtree. The sign of <value> tells
    the direction.  If no entry is available in the given direction it will do
    nothing unless [force] is non-zero.

bon courage smile

ben

Dernière modification par benohite (Le 11/07/2006, à 17:31)


You are legally entitled and encouraged to copy, share and redistribute this CD for yourself and your friends. Share the spirit of Ubuntu !

Hors ligne

#8 Le 11/07/2006, à 19:15

david breizh

Re : python pygtk

voilà j'ai vu un scrypt en python de francescu et retranscrit en wxpython( à l'origine thinker) par bipede donc moi je veux le même fonctionement pour le player mais en pygtk pour pouvoir récuperer le bouton sélectionner et suivant le bouton avoir une url différente, voilà je poste le script en question de bipede pour que quelqu'un puisse trouver une retranscription pour mon script :

#! /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()


ah ! du fin fond de la bretagne grâce au libre on se sent moins seul!
Vive le libre et toutes les distributions qui m'ont fait découvrir le monde de linux!

Hors ligne

#9 Le 12/07/2006, à 00:30

david breizh

Re : python pygtk

en fait voilà , ce que je veux exactement c'est de n'avoir qu'une seule fonction player et que l'url change selon le bouton click; j'ai rajouté une radio au script et dans la fonction player je kill d'abord le signal comme ça  lors d'un click sur le deuxième bouton on change mais le fait d'avoir plusieurs fonction player (et va y en avoir des tas vu le nombres de radios que je veux mettre et plus après)chez emmer... car ça fait un script à rallonge pour juste changer url.

du coup j'aimerai que quelqu'un trouve une solution pour que je puisse ensuite le développer un peu plus car c'est que le début .

voilà alors si une gentille personne pouvait donner une soluce ça me donnerai un coup de pouce car dans la doc je trouve pas grand chose mais si quelqu'un sait après je pourrai avancer car j'ai plein d'idées pour après mais cette fonction de rappel de bouton pourrait m'aider par la suite... affaire à suivre


ah ! du fin fond de la bretagne grâce au libre on se sent moins seul!
Vive le libre et toutes les distributions qui m'ont fait découvrir le monde de linux!

Hors ligne

#10 Le 12/07/2006, à 00:31

david breizh

Re : python pygtk

a oui j'ai oublié de poster le sript dans l'état actuel, le voilà:

#!/usr/bin/env python

# importation de gtk et pygtk
import os
import signal
import pygtk
pygtk.require('2.0')
import gtk

#variables de début
pidActuel = 0

# définition de la classe bb
class bb: 

	
	#fonction de mplayer
	def player(self, widget):
	    
	    url = 'mms://vip1.yacast.fr/encodernrj'

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

	    global pidActuel
	    pidActuel = os.spawnl(os.P_NOWAIT, "/usr/bin/mplayer", "mplayer", url)

	#fonction de mplayer bouton 3
	def player1(self, widget):
	    
	    url = 'mms://vip2.yacast.fr/encoderfun'

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

	    global pidActuel
	    pidActuel = os.spawnl(os.P_NOWAIT, "/usr/bin/mplayer", "mplayer", url)

	# fonction pour stopper la lecture de la radio
	def stop(self, widget):

	    global pidActuel
	    if pidActuel != 0:
               os.kill(pidActuel, signal.SIGTERM)
               pidActuel = 0	
	
	# fonction a deux bal
	def salut(self, widget, donnees):
	    print "Salut ! - Clic sur le %s" % donnees
	
	# fonction pour quiter le programme
	def evnmt_delete(self, widget, evenement, donnees=None):
            gtk.main_quit()
       	    return gtk.FALSE

	# fonction init
	def __init__(self):

        # Creation de la fenetre principale
            fenetre = gtk.Window(gtk.WINDOW_TOPLEVEL)

        # titre de la fenêtre principale
            fenetre.set_title("Radio on line !")

        # Ici on definit juste un gestionnaire pour le signal
        # delete_event (qui quittera GTK immediatement)
	    fenetre.connect("delete_event", self.evnmt_delete)

        # On fixe la largeur des bordures de la fenetre.
            fenetre.set_default_size(220 ,100)
	    fenetre.set_border_width(10)

        # création de la boite principale verticale
	    boite = gtk.VBox(gtk.FALSE, 0)

	# création de la boite1 et boite2 horizontale
	    boite1 = gtk.VBox(gtk.FALSE, 0)
	    boite2 = gtk.HBox(gtk.FALSE, 0)
	# Creation des différents boutons avec leurs étiquettes
	    bouton1 = gtk.Button('nrj')
	    bouton2 = gtk.Button('stop lecture')
	    bouton3 = gtk.Button('fun radio')
	    
        # Lorsque on cliquera sur le bouton, la ligne suivante appellera la
        # methode employé avec la chaine comme argument.
            bouton1.connect("clicked", self.player)
	    bouton2.connect("clicked", self.stop)
	    bouton3.connect("clicked", self.player1)	    
        # placement du bouton1 dans la boite1
	    boite1.pack_start(bouton1, gtk.TRUE, gtk.TRUE, 0)
	    boite2.pack_start(bouton2, gtk.TRUE, gtk.TRUE, 0)
	    boite1.pack_start(bouton3, gtk.TRUE, gtk.TRUE, 0)
	# incorporation des deux boite dans la boite principale
	    boite.pack_start(boite1, gtk.TRUE, gtk.TRUE, 0)
	    boite.pack_start(boite2, gtk.TRUE, gtk.TRUE, 0)

        # N'oubliez pas cette etape, elle fait savoir a GTK que la preparation
        # de ce bouton est achevee et qu'il peut maintenant etre affiche
            fenetre.add(boite)
	    bouton1.show()
	    bouton2.show()
	    bouton3.show()
	    boite1.show()
	    boite2.show()
	    boite.show()
            fenetre.show()

def boucle():
    gtk.main()

if __name__ == "__main__":
    salut = bb()
    boucle()

ah ! du fin fond de la bretagne grâce au libre on se sent moins seul!
Vive le libre et toutes les distributions qui m'ont fait découvrir le monde de linux!

Hors ligne

#11 Le 12/07/2006, à 00:41

Stemp

Re : python pygtk

Ne pas oublier les balises Code pour afficher les longs listings, merci wink


«La violence n'a jamais rien réglé» Gengis Khan 1162-1227
Blog | Crunchbang Linux | Arch Linux

Hors ligne

#12 Le 12/07/2006, à 01:57

david breizh

Re : python pygtk

désoler je ne l'utilisais pas car avant je ne poster pas de long script.

Dernière modification par david breizh (Le 12/07/2006, à 01:57)


ah ! du fin fond de la bretagne grâce au libre on se sent moins seul!
Vive le libre et toutes les distributions qui m'ont fait découvrir le monde de linux!

Hors ligne

#13 Le 12/07/2006, à 08:20

david breizh

Re : python pygtk

juste avant d'aller au boulot j'ai rajouter la fonction fermer le son au deux fonction player et à la fonction quiter pour raccorcir le code et ne pas avoir la music quand on a oublié de stoper lors de la fermeture c'est mieux quand même.

#!/usr/bin/env python

# importation de gtk et pygtk
import os
import signal
import pygtk
pygtk.require('2.0')
import gtk

#variables de début
pidActuel = 0

# définition de la classe bb
class bb: 
	
	#fonction de mplayer
	def player(self, widget):

	    url = 'mms://vip1.yacast.fr/encodernrj'
	    
	    self.stop(self)

	    global pidActuel
	    pidActuel = os.spawnl(os.P_NOWAIT, "/usr/bin/mplayer", "mplayer", url)

	#fonction de mplayer bouton 3
	def player1(self, widget):
	    
	    url = 'mms://vip2.yacast.fr/encoderfun'

	    self.stop(self)

	    global pidActuel
	    pidActuel = os.spawnl(os.P_NOWAIT, "/usr/bin/mplayer", "mplayer", url)

	# fonction pour stopper la lecture de la radio
	def stop(self, widget):

	    global pidActuel
	    if pidActuel != 0:
               os.kill(pidActuel, signal.SIGTERM)
               pidActuel = 0	
	
	# fonction a deux bal
	def salut(self, widget, donnees):
	    print "Salut ! - Clic sur le %s" % donnees
	
	# fonction pour quiter le programme
	def evnmt_delete(self, widget, evenement, donnees=None):
            self.stop(self)
	    gtk.main_quit()
       	    return gtk.FALSE

	# fonction init
	def __init__(self):

        # Creation de la fenetre principale
            fenetre = gtk.Window(gtk.WINDOW_TOPLEVEL)

        # titre de la fenêtre principale
            fenetre.set_title("Radio on line !")

        # Ici on definit juste un gestionnaire pour le signal
        # delete_event (qui quittera GTK immediatement)
	    fenetre.connect("delete_event", self.evnmt_delete)

        # On fixe la largeur des bordures de la fenetre.
            fenetre.set_default_size(220 ,100)
	    fenetre.set_border_width(10)

        # création de la boite principale verticale
	    boite = gtk.VBox(gtk.FALSE, 0)

	# création de la boite1 et boite2 horizontale
	    boite1 = gtk.VBox(gtk.FALSE, 0)
	    boite2 = gtk.HBox(gtk.FALSE, 0)

	# Creation des différents boutons avec leurs étiquettes
	    bouton1 = gtk.Button('nrj')
	    bouton2 = gtk.Button('stop lecture')
	    bouton3 = gtk.Button('fun radio')
	    
        # Lorsque on cliquera sur le bouton, la ligne suivante appellera la
        # methode employé avec la chaine comme argument.
            bouton1.connect("clicked", self.player)
	    bouton2.connect("clicked", self.stop)
	    bouton3.connect("clicked", self.player1)
	    
        # placement du bouton1 dans la boite1
	    boite1.pack_start(bouton1, gtk.TRUE, gtk.TRUE, 0)
	    boite2.pack_start(bouton2, gtk.TRUE, gtk.TRUE, 0)
	    boite1.pack_start(bouton3, gtk.TRUE, gtk.TRUE, 0)

	# incorporation des deux boite dans la boite principale
	    boite.pack_start(boite1, gtk.TRUE, gtk.TRUE, 0)
	    boite.pack_start(boite2, gtk.TRUE, gtk.TRUE, 0)

        # N'oubliez pas cette etape, elle fait savoir a GTK que la preparation
        # de ce bouton est achevee et qu'il peut maintenant etre affiche
            fenetre.add(boite)
	    bouton1.show()
	    bouton2.show()
	    bouton3.show()
	    boite1.show()
	    boite2.show()
	    boite.show()
            fenetre.show()

def boucle():
    gtk.main()

if __name__ == "__main__":
    salut = bb()
    boucle()

ah ! du fin fond de la bretagne grâce au libre on se sent moins seul!
Vive le libre et toutes les distributions qui m'ont fait découvrir le monde de linux!

Hors ligne

#14 Le 13/07/2006, à 07:55

mccricri

Re : python pygtk

Haaaa, ben expliqué une deuxième fois, je comprends mieux ce que tu voulais faire.
Donc, j'ai trouvé un petit exemple qui explique les bouttons.
Apparement, on peut ajouter des données qui seront les paramètres supplémentaires lors de l'appel de la méthode qui gère l'événement de click.
Donc, en changeant la ligne de "connection" de l'événement au boutton, tu devrais pouvoir récupérer l'url dans l'événement de click.

 bouton1.connect("clicked", self.player, "mms://vip1.yacast.fr/encodernrj")
 bouton3.connect("clicked", self.player1, "mms://vip2.yacast.fr/encoderfun")

Bien sur, la fonction d'événement doit un peu changer :

    #fonction de mplayer
    def player(self, widget, url=None):

       if url == None: 
            return
        
        self.stop(self)

        global pidActuel
        pidActuel = os.spawnl(os.P_NOWAIT, "/usr/bin/mplayer", "mplayer", url)

Maintenant, moi je disais d'utiliser plutôt une liste contenant plusieurs valeurs dans laquelle on peut choisir une valeur correspondant à une radio et cliquer sur le bouton pour zapper. Parce qu'avec des bouttons, à partir d'un moment, la liste des radios va être longue et ta fenêtre va contenir beaucoup de boutons.
Mais il s'agit là d'un autre objet à gérer, et c'est une autre aventure wink

Edit : Merci à Benohit pour l'astuce, ça éviterait de relancer mplayer à chaque click, mais là aussi c'est une autre histoire. (Voir os.popen2() )

Dernière modification par mccricri (Le 13/07/2006, à 08:16)

Hors ligne

#15 Le 13/07/2006, à 18:06

david breizh

Re : python pygtk

en tout cas merci ça marche nickel, donc je vais pouvoir l'améliorer et le construire un peu mieux (icon, fond, fonctions,etc...) , en fait j'étais pas loin du tout du tient, il me manquait juste la section if return et None pour l'url moi je mettais une adresse, mais bon maintenant j'ai compris le truc donc ça va m'aider pour plus loin sinon pour le bouton zapp j'ai pas très bien compris ce que tu veux dire ( tu veux un seul bouton zapp qui à chaques clic de souris zappe entre les radios dans une liste, c'est ça que tu veux dire ou pas car si c'est ça et bien je mettrais la main à la patte car j'ai des idées pour pouvoir le faire simplement mais bon pour le moment j'ai du pain sur la planche donc si pour suivre la suite du programme(je suis en vacances maintenant donc vais pouvoir avancer et chercher) il faut ouvrir un nouveau topic ou pas, en tout cas je peux mettre un résolu sur celui là en attendant ta réponse et encore merci car je tournais autour depuis 4 jours enfin bon, maintenant "ACTION LES MIMINES":D:D:D:D


ah ! du fin fond de la bretagne grâce au libre on se sent moins seul!
Vive le libre et toutes les distributions qui m'ont fait découvrir le monde de linux!

Hors ligne

#16 Le 14/07/2006, à 15:49

mccricri

Re : python pygtk

Réponse de normand tongue : Oui, ça pourrait être rigolo de pouvoir passer à la radio suivante/précédente enregistrée dans une liste.

Et non, c'est pas ce que je voulais dire. Je pensais plus à mettre toutes tes radios dans un tableau. Je connais pas bien les composants GTK, mais en wxWindows, c'est une ListBox, ici je crois que ça doit être un TreeView a 1 seule colonne et 1 seul niveau de "feuille"
basictreeview.png

Mais ça m'a l'air compliqué pour gérer une simple liste, sinon il y a la ComboBox qui est pratique aussi.
comboboxentrybasic.png

Après, t'en choisi une dans la liste, et un click sur le bouton démarre la radio choisie. Voir un double click. Voir... mais bon, ce ne sont que des idées d'amélioration que je te donne. Histoire de te donner des pistes pour t'occuper pendant tes vacances, et que tu continues à t'amuser avec python et gtk.

Dernière modification par mccricri (Le 14/07/2006, à 15:51)

Hors ligne

#17 Le 17/07/2006, à 16:49

david breizh

Re : python pygtk

hé bien me revoilà après avoir été carbonisé sur les plages de crozon pour repartir dans le sud.

donc les nouvelles ajoutées:
- création d'un menu quand on clique sur le bouton.(gain de place c'est clair).
- ajout de plusieurs radios.

maintenant je vais sûrement incorporer les logos de la radio écouté dans la fenètre.

voilà donc je poste le script en cours (qui fonctionne parfaitement):

#!/usr/bin/env python

# importation de gtk et pygtk

import os
import signal
import pygtk
pygtk.require('2.0')
import gtk

#variables de début

pidActuel = 0

# définition de la classe bb

class bb:
	
	# fonction init

	def __init__(self):

	# Creation de la fenetre principale

            fenetre = gtk.Window(gtk.WINDOW_TOPLEVEL)

        # titre de la fenêtre principale

            fenetre.set_title("Radio on line !")

        # Ici on definit juste un gestionnaire pour le signal
        # delete_event (qui quittera GTK immediatement)

	    fenetre.connect("delete_event", self.evnmt_delete)

        # On fixe la largeur des bordures et la taille de la fenetre.

            fenetre.set_size_request(220, 100)
	    fenetre.set_default_size(220 ,100)
	    fenetre.set_border_width(10)

	#création du menu
	    menu = gtk.Menu()

	#création des entrées du menu

	    xnrj = gtk.MenuItem("NRJ")
	    xfunradio = gtk.MenuItem("Fun Radio")
	    xskyrock =gtk.MenuItem("Skyrock")
	    xcherie = gtk.MenuItem("Chérie fm")
	    xeurope2 = gtk.MenuItem("Europe 2")
	    xrtl2 = gtk.MenuItem("RTL 2")
	    xlemouv = gtk.MenuItem("Le Mouv")
	    
	# on les places dans le menuradio

	    menu.append(xnrj)
	    menu.append(xfunradio)
	    menu.append(xskyrock)
	    menu.append(xcherie)
	    menu.append(xeurope2)
	    menu.append(xrtl2)
	    menu.append(xlemouv)	    
  
	# on connect une fonction au choix de la liste du menu

	    xnrj.connect("activate", self.player, "mms://vip1.yacast.fr/encodernrj")
	    xfunradio.connect("activate", self.player, "mms://vip2.yacast.fr/encoderfun")
	    xskyrock.connect("activate", self.player, "mms://vip3.yacast.fr/encoderskyrock")
	    xcherie.connect("activate", self.player, "mms://vip1.yacast.fr/encodercheriefm")
	    xeurope2.connect("activate", self.player, "mms://viptvr.yacast.fr/tvr_europe2")
	    xrtl2.connect("activate", self.player, "mms://vipbu.yacast.fr/encoderrtl2")
	    xlemouv.connect("activate", self.player, "mms://viptvr.yacast.fr/encoderlemouv")
	    
	    xnrj.show()
	    xfunradio.show()
	    xskyrock.show()
	    xcherie.show()
	    xeurope2.show()
	    xrtl2.show()
	    xlemouv.show()	    	
	
        # création de la boite principale verticale

	    boite = gtk.VBox(gtk.FALSE, 0)

	# création de la boite1 et boite2 horizontale

	    boite1 = gtk.VBox(gtk.FALSE, 0)
	    boite2 = gtk.HBox(gtk.FALSE, 0)

	# Creation des différents boutons avec leurs étiquettes

	    bouton20 = gtk.Button('stop lecture')
	    bouton = gtk.Button("radios, click me!")

	    bouton.connect_object("event", self.evnmt_button_press, menu)
	    bouton.show()

        # Lorsque on cliquera sur le bouton, la ligne suivante appellera la
        # methode employé avec la chaine comme argument.
            
	    bouton20.connect("clicked", self.stop)
      	    bouton20.show()

	# placement du bouton1 dans la boite1

	    boite1.pack_start(bouton, gtk.TRUE, gtk.TRUE, 0)
	    boite1.show()
	    boite2.pack_start(bouton20, gtk.TRUE, gtk.TRUE, 0)
	    boite2.show()

	# incorporation des deux boite dans la boite principale

	    boite.pack_start(boite1, gtk.TRUE, gtk.TRUE, 0)
	    boite.pack_start(boite2, gtk.TRUE, gtk.TRUE, 0)
	    boite.show()

	    fenetre.add(boite)
	    fenetre.show()

	# fonction pour la connection du bouton avec notre menu

	def evnmt_button_press(self, widget, evenement):

            if evenement.type == gtk.gdk.BUTTON_PRESS:
	       widget.popup(None, None, None, evenement.button, evenement.time)

        # On fait savoir au code appelant que l'on a traite l'evenement. Son
        # histoire s'arrete ici.

               return gtk.TRUE

        # On fait savoir au code appelant que l'evenement n'a pas ete traite. Il continue.

            return gtk.FALSE

	#fonction de mplayer

	def player(self, widget, url=None):
	    
	    if url == None: 
               return

	    self.stop(self)

	    global pidActuel
	    pidActuel = os.spawnl(os.P_NOWAIT, "/usr/bin/mplayer", "mplayer", url)

	# fonction pour stopper la lecture de la radio

	def stop(self, widget):

	    global pidActuel
	    if pidActuel != 0:
               os.kill(pidActuel, signal.SIGTERM)
               pidActuel = 0	
	
	# fonction a deux bal

	def salut(self, widget, donnees):
	    print "Salut ! - Clic sur le %s" % donnees
	
	# fonction pour quiter le programme

	def evnmt_delete(self, widget, evenement, donnees=None):
            self.stop(self)
	    gtk.main_quit()
       	    return gtk.FALSE



def boucle():
    gtk.main()
    return 0

if __name__ == "__main__":
    salut = bb()
    boucle()

Dernière modification par david breizh (Le 17/07/2006, à 16:50)


ah ! du fin fond de la bretagne grâce au libre on se sent moins seul!
Vive le libre et toutes les distributions qui m'ont fait découvrir le monde de linux!

Hors ligne

#18 Le 17/07/2006, à 19:25

david breizh

Re : python pygtk

bon et bien je bloque encore, ca me saoul.

donc j'ai mis un logo dans une des vbox (elle s'affiche) mais je voudrais qu'elle change lorsque l'on clique sur la radio dans le menu.

et là j'ai pas  trouvé comment mis prendre.
donc si quelqu'un a une idée ou comment attribuer un logo différent par rapport au clic je suis preneur

#!/usr/bin/env python

# importation de gtk et pygtk

import os
import signal
import pygtk
pygtk.require('2.0')
import gtk

#variables de début

pidActuel = 0

logox = "funradio.jpg"

# définition de la classe bb

class bb:
	
	# fonction init

	def __init__(self):
	   
	# Creation de la fenetre principale

            fenetre = gtk.Window(gtk.WINDOW_TOPLEVEL)

        # titre de la fenêtre principale

            fenetre.set_title("Radio on line !")

        # Ici on definit juste un gestionnaire pour le signal
        # delete_event (qui quittera GTK immediatement)

	    fenetre.connect("delete_event", self.evnmt_delete)

        # On fixe la largeur des bordures et la taille de la fenetre.

            fenetre.set_size_request(220, -1)
	    fenetre.set_default_size(220 ,-1)
	    fenetre.set_border_width(10)
		
	    #création du menu
	    menu = gtk.Menu()

	#création des entrées du menu

	    xnrj = gtk.MenuItem("NRJ")
	    xfunradio = gtk.MenuItem("Fun Radio")
	    xskyrock =gtk.MenuItem("Skyrock")
	    xcherie = gtk.MenuItem("Chérie fm")
	    xeurope2 = gtk.MenuItem("Europe 2")
	    xrtl2 = gtk.MenuItem("RTL 2")
	    xlemouv = gtk.MenuItem("Le Mouv")
	    
	# on les places dans le menuradio

	    menu.append(xnrj)
	    menu.append(xfunradio)
	    menu.append(xskyrock)
	    menu.append(xcherie)
	    menu.append(xeurope2)
	    menu.append(xrtl2)
	    menu.append(xlemouv)	    
  
	# on connect une fonction au choix de la liste du menu

	    xnrj.connect("activate", self.player, "mms://vip1.yacast.fr/encodernrj", 							  "nrj.jpg")
	    xfunradio.connect("activate", self.player, "mms://vip2.yacast.fr/encoderfun")
	    xskyrock.connect("activate", self.player, "mms://vip3.yacast.fr/encoderskyrock")
	    xcherie.connect("activate", self.player, "mms://vip1.yacast.fr/encodercheriefm")
	    xeurope2.connect("activate", self.player, "mms://viptvr.yacast.fr/tvr_europe2")
	    xrtl2.connect("activate", self.player, "mms://vipbu.yacast.fr/encoderrtl2")
	    xlemouv.connect("activate", self.player, "mms://viptvr.yacast.fr/encoderlemouv")
	    
	    xnrj.show()
	    xfunradio.show()
	    xskyrock.show()
	    xcherie.show()
	    xeurope2.show()
	    xrtl2.show()
	    xlemouv.show()	

	# création de la boite principale verticale

	    boite = gtk.VBox(gtk.FALSE, 0)

	# création de la boite1 et boite2 horizontale

	    boite1 = gtk.VBox(gtk.FALSE, 0)
	    boite2 = gtk.VBox(gtk.FALSE, 0)

	# Creation des différents boutons avec leurs étiquettes

	    bouton2 = gtk.Button("stoper la lecture")
	    bouton = gtk.Button("radios cliquez moi!")

	    bouton.connect_object("event", self.evnmt_button_press, menu)
	    bouton.show()

        # Lorsque on cliquera sur le bouton, la ligne suivante appellera la
        # methode employé avec la chaine comme argument.
            
	    bouton2.connect("clicked", self.stop)
      	    bouton2.show()

	    logo = gtk.Image()
	    logo.set_from_file(logox)
	    logo.show()
	    
	# placement du bouton1 dans la boite1

	    boite2.pack_start(bouton, gtk.TRUE, gtk.TRUE, 0)
	    boite2.pack_start(bouton2, gtk.TRUE, gtk.TRUE, 0)
	    boite2.show()

	    boite1.pack_start(logo, gtk.TRUE, gtk.TRUE, 0)
	    boite1.show()

 	    boite.pack_start(boite1, gtk.TRUE, gtk.TRUE, 0)
	    boite.pack_start(boite2, gtk.TRUE, gtk.TRUE, 0)
	    boite.show()

	    

	# incorporation des deux boite dans la boite principale

	    fenetre.add(boite)
	    fenetre.show()

	# fonction pour la connection du bouton avec notre menu

	def evnmt_button_press(self, widget, evenement):

            if evenement.type == gtk.gdk.BUTTON_PRESS:
	       widget.popup(None, None, None, evenement.button, evenement.time)

        # On fait savoir au code appelant que l'on a traite l'evenement. Son
        # histoire s'arrete ici.

               return gtk.TRUE

        # On fait savoir au code appelant que l'evenement n'a pas ete traite. Il continue.

            return gtk.FALSE

	#fonction de mplayer

	def player(self, widget, url=None, logox=None):
	    
	    if url == None: 
               return

	    self.stop(self)
	
	    global pidActuel
	    pidActuel = os.spawnl(os.P_NOWAIT, "/usr/bin/mplayer", "mplayer", url)

	# fonction pour stopper la lecture de la radio

	
	def stop(self, widget):

	    global pidActuel
	    if pidActuel != 0:
               os.kill(pidActuel, signal.SIGTERM)
               pidActuel = 0	
	
	# fonction a deux bal

	def salut(self, widget, donnees):
	    print "Salut ! - Clic sur le %s" % donnees
	
	# fonction pour quiter le programme

	def evnmt_delete(self, widget, evenement, donnees=None):
            self.stop(self)
	    gtk.main_quit()
       	    return gtk.FALSE



def boucle():
    gtk.main()
    return 0

if __name__ == "__main__":
    salut = bb()
    boucle()

Dernière modification par david breizh (Le 17/07/2006, à 19:25)


ah ! du fin fond de la bretagne grâce au libre on se sent moins seul!
Vive le libre et toutes les distributions qui m'ont fait découvrir le monde de linux!

Hors ligne

#19 Le 18/07/2006, à 13:43

mccricri

Re : python pygtk

Ouais, le menu sur le boutton, c'est pas mal non plus.

Pour l'image, c'est bien commencé.
Ce qu'il faut c'est garder la référence à l'objet image pour plus tard :

      self.logo = gtk.Image()
      self.logo.set_from_file(logox)
      self.logo.show()

Ensuite, dans la méthode qui change de radio, il faut utiliser le paramètre que tu as ajouté , logox, pour changer l'url de l'image de tout à l'heure :

    self.logo.set_from_file(logox)

Eventuellement tester si logox == None et mettre alors une image par défaut, qui dirais "J'ai pas d'image"
Reste à compléter la liste des images lors du connect de chaque menu, comme tu l'as déjà fait pour nrj

Autre proposition d'amélioration : je mettrais les informations des radios dans une liste en début de script, et je l'utiliserai en "boucle" dans le programme.
Parce que là, y a pas beaucoup de radio, mais déjà quand tu en ajoutes une il faut changer à pas mal d'endroit dans le code. Au risque d'oublier un bout.

list_radio = [("Nrj","mms://vip1.yacast.fr/encodernrj","nrj.jpg"), ("Fun Radio","mms://vip2.yacast.fr/encoderfun","funradio.jpg"),... ]

Hors ligne

#20 Le 21/07/2006, à 17:28

david breizh

Re : python pygtk

salut, merci mccricri pour tes solutions.
mais là je suis dans le sud donc je peux pas trop tester le truc car ils sont sous windows donc je testerai ça en rentrant mais juste une question à ton amélioration pour la liste ( heu je ne fais que commencer la prog python pygtk donc j'ai lu les aides et tutoriels sur le sujet (et y'en a)) ,  donc si tu pouvait reprendre le code pour en faire un exemple pour la liste ça serai pas mal pour que je comprennes déjà et pouvoir l'exploiter plus tard .

en plus de ça je ne sais plus trop si il vaut mieux utiliser python  avec python avec pygtk ou wxpython à votre avis lequel et le mieux et je voudrai  savoir si on pouvais créer un einterface graphique rapidement à l'aide de glade avec python ou avec un autre logiciel du style.


ah ! du fin fond de la bretagne grâce au libre on se sent moins seul!
Vive le libre et toutes les distributions qui m'ont fait découvrir le monde de linux!

Hors ligne

#21 Le 23/07/2006, à 00:13

mccricri

Re : python pygtk

Ben oui, mais si c'est moi qui l'écrit, c'est pas toi qui apprends à le faire tongue

Je te donnais juste des indications, mais du moment que ça fonctionne, que t'en est content, c'est bon. Pas la peine non plus de se prendre la tête.

Pour le choix de la lib graphique, y a de quoi débattre toute la nuit, un peu comme le choix de sa wm sous linux (kde ou gnome ou ...). Y a du bon dans chaque, du moins bon aussi. Après c'est surtout une question d'habitude. Et pour les débutants, c'est du pareil au même. ça permettra simplement d'apprendre les bases de la prog graphique. Et plus tard, la transition sera super facile, et il sera encore temps de voir pour tester chaque toolkit et choisir vraiment.

Et oui, glade doit permettre de faire des interfaces gtk réutilisable avec python.
un petit exemple

Bonnes vacances, et bonne continuation

Hors ligne

#22 Le 21/08/2006, à 15:30

Francescu

Re : python pygtk

Je vois que mon petit script a donné des idée a certains wink parcontre sa serait bien de me tenir o courant de l'évolution de ton script stp sa me permettrai d'apprendre certaine chose en prog et de voir comment vous avez retranscrit mon script merci


MacBook Pro with Ubuntu of Course !! ;)

Hors ligne

#23 Le 06/09/2006, à 04:04

david breizh

Re : python pygtk

désolé faut que je mis remet car vendu mes 2 pc donc là je viens juste de réinstaller sur le portable de ma copine , en attente de mon prochain pc (sur mesure) car je dois déménager bientôt donc ça va venir un peu de patience car il faut que je réinstall tout le toutine ainsi que ma clé usb tnt mais bon ça ne devrait pas être trop long , et pour ce qui est du prog tout est là enfin le principal. voilà alors très bientôt.


ah ! du fin fond de la bretagne grâce au libre on se sent moins seul!
Vive le libre et toutes les distributions qui m'ont fait découvrir le monde de linux!

Hors ligne

#24 Le 11/02/2007, à 16:47

david breizh

Re : python pygtk

bon j'ai décider de mi remettre mais c'est pas facile, j'ai l'image par défault qui s'affiche mais j'ai essayer de connecter (je suis plus très sur) le nom de l'image lors du clic sur la radio mais ne change pour l'image), en plus j'aimerai bien en faire une liste de toutes les radios car ça fait un peut long quand même), donc si quelqu'un a des petites pistes car je but encore ou je doit me mélanger les pinceaux.

je poste la source du prog:

#!/usr/bin/env python

# importation de gtk et pygtk

import os
import signal
import pygtk
pygtk.require('2.0')
import gtk

#variables de début

pidActuel = 0

logox = "fun.jpg"

# définition de la classe bb

class bb:
    
    # fonction init

    def __init__(self):
       
    # Creation de la fenetre principale

        fenetre = gtk.Window(gtk.WINDOW_TOPLEVEL)

        # titre de la fenêtre principale

        fenetre.set_title("Radio on line !")

        # Ici on definit juste un gestionnaire pour le signal
        # delete_event (qui quittera GTK immediatement)

        fenetre.connect("delete_event", self.evnmt_delete)

        # On fixe la largeur des bordures et la taille de la fenetre.

        fenetre.set_size_request(220, -1)
        fenetre.set_default_size(220 ,-1)
        fenetre.set_border_width(10)
        
        #création du menu
        menu = gtk.Menu()

    #création des entrées du menu

        xnrj = gtk.MenuItem("NRJ")
        xfunradio = gtk.MenuItem("Fun Radio")
        xskyrock =gtk.MenuItem("Skyrock")
        xcherie = gtk.MenuItem("Chérie fm")
        xeurope2 = gtk.MenuItem("Europe 2")
        xrtl2 = gtk.MenuItem("RTL 2")
        xlemouv = gtk.MenuItem("Le Mouv")
        
    # on les places dans le menuradio

        menu.append(xnrj)
        menu.append(xfunradio)
        menu.append(xskyrock)
        menu.append(xcherie)
        menu.append(xeurope2)
        menu.append(xrtl2)
        menu.append(xlemouv)        
  
    # on connect une fonction au choix de la liste du menu

        xnrj.connect("activate", self.player, "mms://vip1.yacast.fr/encodernrj", "nrj.jpg")
        xfunradio.connect("activate", self.player, "mms://vip2.yacast.fr/encoderfun", "fun.jpg")
        xskyrock.connect("activate", self.player, "mms://vip3.yacast.fr/encoderskyrock")
        xcherie.connect("activate", self.player, "mms://vip1.yacast.fr/encodercheriefm")
        xeurope2.connect("activate", self.player, "mms://viptvr.yacast.fr/tvr_europe2")
        xrtl2.connect("activate", self.player, "mms://vipbu.yacast.fr/encoderrtl2")
        xlemouv.connect("activate", self.player, "mms://viptvr.yacast.fr/encoderlemouv")
        
        xnrj.show()
        xfunradio.show()
        xskyrock.show()
        xcherie.show()
        xeurope2.show()
        xrtl2.show()
        xlemouv.show()    

    # création de la boite principale verticale

        boite = gtk.VBox(gtk.FALSE, 0)

    # création de la boite1 et boite2 horizontale

        boite1 = gtk.VBox(gtk.FALSE, 0)
        boite2 = gtk.VBox(gtk.FALSE, 0)

    # Creation des différents boutons avec leurs étiquettes

        bouton2 = gtk.Button("stoper la lecture")
        bouton = gtk.Button("radios cliquez moi!")

        bouton.connect_object("event", self.evnmt_button_press, menu)
        bouton.show()

        # Lorsque on cliquera sur le bouton, la ligne suivante appellera la
        # methode employé avec la chaine comme argument.
            
        bouton2.connect("clicked", self.stop)
        bouton2.show()

        logo = gtk.Image()
        logo.set_from_file(logox)
        logo.show()
        
    # placement du bouton1 dans la boite1

        boite2.pack_start(bouton, gtk.TRUE, gtk.TRUE, 0)
        boite2.pack_start(bouton2, gtk.TRUE, gtk.TRUE, 0)
        boite2.show()

        boite1.pack_start(logo, gtk.TRUE, gtk.TRUE, 0)
        boite1.show()

        boite.pack_start(boite1, gtk.TRUE, gtk.TRUE, 0)
        boite.pack_start(boite2, gtk.TRUE, gtk.TRUE, 0)
        boite.show()

        

    # incorporation des deux boite dans la boite principale

        fenetre.add(boite)
        fenetre.show()

    # fonction pour la connection du bouton avec notre menu

    def evnmt_button_press(self, widget, evenement):

            if evenement.type == gtk.gdk.BUTTON_PRESS:
               widget.popup(None, None, None, evenement.button, evenement.time)

        # On fait savoir au code appelant que l'on a traite l'evenement. Son
        # histoire s'arrete ici.

               return gtk.TRUE

        # On fait savoir au code appelant que l'evenement n'a pas ete traite. Il continue.

            return gtk.FALSE

    #fonction de mplayer

    def player(self, widget, url=None, logox=None):
        
        if url == None: 
               return

        logo = logox

        self.stop(self)
    
        global pidActuel
        pidActuel = os.spawnl(os.P_NOWAIT, "/usr/bin/mplayer", "mplayer", url)

    # fonction pour stopper la lecture de la radio

    
    def stop(self, widget):

        global pidActuel
        if pidActuel != 0:
               os.kill(pidActuel, signal.SIGTERM)
               pidActuel = 0    
    
    # fonction a deux bal

    def salut(self, widget, donnees):
        print "Salut ! - Clic sur le %s" % donnees
    
    # fonction pour quiter le programme

    def evnmt_delete(self, widget, evenement, donnees=None):
            self.stop(self)
            gtk.main_quit()
            return gtk.FALSE



def boucle():
    gtk.main()
    return 0

if __name__ == "__main__":
    salut = bb()
    boucle()

est ce qu'il y moyen de mettre deux fonctions sur le click du bouton ou deux arguments?


ah ! du fin fond de la bretagne grâce au libre on se sent moins seul!
Vive le libre et toutes les distributions qui m'ont fait découvrir le monde de linux!

Hors ligne