Chargement en cours pupitre.py +56 −38 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -10,8 +10,20 @@ import csv mute = False # le son n'est pas coupé au démarrage bg_color = "gray" # Chargement du fichier CSV contenant les informations : Nom, Pays, Type, Url, Logo with open("./data/radios.csv", 'r', encoding='utf-8-sig') as radios_file: '''utf-8-sig au lieu de utf-8 pour éviter l'erreur sur le nom du 1er champ '\ufeffNom' transforme en liste de dictionnaires pour extraire une donnée : radios_list[numéro de la radio][nom du champ]''' radios_list = csv.DictReader(radios_file) radios_list = [dict(ligne) for ligne in radios_list] # calcul du nombre de radios contenues dans le fichier CSV nb_radios = len(radios_list) # classes --------------------------------- class Pupitre: def __init__(self): Chargement en cours @@ -35,6 +47,8 @@ class Pupitre: self.boutons() # affichage des boutons self.info() # affichage de l'info sur l'application self.num_radio_selected = 0 def zones(self): # fenêtre contenant la mosaïque de logos des radios > dim 500x400 self.zone_mosaique = tk.Frame(self.root, bg="lightgray") Chargement en cours Chargement en cours @@ -65,16 +79,16 @@ class Pupitre: style.configure("BW.TLabel", foreground="black", background=bg_color) # affichage des boutons de commande : back, pause, play, stop, forward btn_back = ttk.Button(self.menu, image=self.icon_back, text="Back", command=None, style="BW.TLabel") btn_back = ttk.Button(self.menu, image=self.icon_back, command=self.radio_back, style="BW.TLabel") btn_back.place(width=48, height=32, x=x_menu + 30, y=y_menu + 0) btn_play = ttk.Button(self.menu, image=self.icon_pause, text="Pause", command=self.radio_pause, btn_play = ttk.Button(self.menu, image=self.icon_pause, command=self.radio_pause, style="BW.TLabel") btn_play.place(width=32, height=32, x=x_menu + 90, y=y_menu + 0) btn_pause = ttk.Button(self.menu, image=self.icon_play, text="Play", command=self.radio_play, style="BW.TLabel") btn_pause = ttk.Button(self.menu, image=self.icon_play, command=self.radio_play, style="BW.TLabel") btn_pause.place(width=32, height=32, x=x_menu + 135, y=y_menu + 0) btn_stop = ttk.Button(self.menu, image=self.icon_stop, text="Stop", command=self.radio_stop, style="BW.TLabel") btn_stop = ttk.Button(self.menu, image=self.icon_stop, command=self.radio_stop, style="BW.TLabel") btn_stop.place(width=32, height=32, x=x_menu + 178, y=y_menu + 0) btn_forward = ttk.Button(self.menu, image=self.icon_forward, text="Forward", command=None, style="BW.TLabel") btn_forward = ttk.Button(self.menu, image=self.icon_forward, command=self.radio_forward, style="BW.TLabel") btn_forward.place(width=48, height=32, x=x_menu + 225, y=y_menu + 0) # potentiomètre de volume Chargement en cours @@ -96,11 +110,6 @@ class Pupitre: def mosaique(self): # récupération de la liste des radios (+infos) et affichage de la mosaïque de logos self.logo = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""] with open("./data/radios.csv", 'r', encoding='utf-8-sig') as radios_file: # utf-8-sig au lieu de utf8 pour éviter l'erreur sur le nom du 1er champ '\ufeffNom' radios_list = csv.DictReader(radios_file) radios_list = [dict(ligne) for ligne in radios_list] # transforme en liste de dictionnaires # boucles de remplissage de la mosaïque de logos for y_logo in range(4): # 4 lignes for x_logo in range(5): # 5 colonnes Chargement en cours @@ -110,30 +119,39 @@ class Pupitre: try: if radios_list[num_radio]['Logo'] != "": # si un logo est associé à la radio self.logo[num_radio] = tk.PhotoImage(file="images/" + radios_list[num_radio]['Logo']) else: # si il n'y a pas de logo pour la radio else: # s'il n'y a pas de logo pour la radio self.logo[num_radio] = tk.PhotoImage(file="images/radio.png") # création du bouton avec le logo de la radio btn_logo = tk.Button(self.zone_mosaique, image=self.logo[num_radio]) # utilisation d'une fonction 'lambda' indexée sur la position du logo btn_logo.config( command=lambda flux=radios_list[num_radio]['Url'], num_radio=num_radio: self.radio_selected(flux, num_radio)) num_radio=num_radio: self.radio_selected(num_radio)) btn_logo.place(width=100, height=100, x=x_logo * 100, y=y_logo * 100) except: # quand le nombre de radios est < 20 except: # quand le nombre de radios est < 20 on ne crée pas de bouton pass def radio_selected(self, flux, num_radio): self.radio_flux(flux) def radio_selected(self, num_radio): self.radio_flux(radios_list[num_radio]['Url']) # affichage de la radio sélectionnée with open("./data/radios.csv", 'r', encoding='utf-8-sig') as radios_file: radios_list = csv.DictReader(radios_file) radios_list = [dict(ligne) for ligne in radios_list] # transforme en liste de dictionnaires self.logo_selected = tk.PhotoImage(file="images/Large/" + radios_list[num_radio]['Logo']) self.lbl_radio_selected.config(image=self.logo_selected) # print(radios_list[1]['Nom']) self.lbl_info_radio.config(text=radios_list[num_radio]['Nom'], font=('Helvatical bold', 20)) self.num_radio_selected = num_radio def radio_back(self): # passe à la radio précédente self.num_radio_selected -= 1 if self.num_radio_selected == -1: self.num_radio_selected = nb_radios - 1 self.radio_selected(self.num_radio_selected) def radio_forward(self): # passe à la radio suivante self.num_radio_selected += 1 if self.num_radio_selected == nb_radios: self.num_radio_selected = 0 self.radio_selected(self.num_radio_selected) def switch_sound(self): # bascule on/off du son global mute Chargement en cours webradiopi.cfg +1 −1 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff 28 No newline at end of file 72 No newline at end of file Chargement en cours
pupitre.py +56 −38 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff Chargement en cours @@ -10,8 +10,20 @@ import csv mute = False # le son n'est pas coupé au démarrage bg_color = "gray" # Chargement du fichier CSV contenant les informations : Nom, Pays, Type, Url, Logo with open("./data/radios.csv", 'r', encoding='utf-8-sig') as radios_file: '''utf-8-sig au lieu de utf-8 pour éviter l'erreur sur le nom du 1er champ '\ufeffNom' transforme en liste de dictionnaires pour extraire une donnée : radios_list[numéro de la radio][nom du champ]''' radios_list = csv.DictReader(radios_file) radios_list = [dict(ligne) for ligne in radios_list] # calcul du nombre de radios contenues dans le fichier CSV nb_radios = len(radios_list) # classes --------------------------------- class Pupitre: def __init__(self): Chargement en cours @@ -35,6 +47,8 @@ class Pupitre: self.boutons() # affichage des boutons self.info() # affichage de l'info sur l'application self.num_radio_selected = 0 def zones(self): # fenêtre contenant la mosaïque de logos des radios > dim 500x400 self.zone_mosaique = tk.Frame(self.root, bg="lightgray") Chargement en cours Chargement en cours @@ -65,16 +79,16 @@ class Pupitre: style.configure("BW.TLabel", foreground="black", background=bg_color) # affichage des boutons de commande : back, pause, play, stop, forward btn_back = ttk.Button(self.menu, image=self.icon_back, text="Back", command=None, style="BW.TLabel") btn_back = ttk.Button(self.menu, image=self.icon_back, command=self.radio_back, style="BW.TLabel") btn_back.place(width=48, height=32, x=x_menu + 30, y=y_menu + 0) btn_play = ttk.Button(self.menu, image=self.icon_pause, text="Pause", command=self.radio_pause, btn_play = ttk.Button(self.menu, image=self.icon_pause, command=self.radio_pause, style="BW.TLabel") btn_play.place(width=32, height=32, x=x_menu + 90, y=y_menu + 0) btn_pause = ttk.Button(self.menu, image=self.icon_play, text="Play", command=self.radio_play, style="BW.TLabel") btn_pause = ttk.Button(self.menu, image=self.icon_play, command=self.radio_play, style="BW.TLabel") btn_pause.place(width=32, height=32, x=x_menu + 135, y=y_menu + 0) btn_stop = ttk.Button(self.menu, image=self.icon_stop, text="Stop", command=self.radio_stop, style="BW.TLabel") btn_stop = ttk.Button(self.menu, image=self.icon_stop, command=self.radio_stop, style="BW.TLabel") btn_stop.place(width=32, height=32, x=x_menu + 178, y=y_menu + 0) btn_forward = ttk.Button(self.menu, image=self.icon_forward, text="Forward", command=None, style="BW.TLabel") btn_forward = ttk.Button(self.menu, image=self.icon_forward, command=self.radio_forward, style="BW.TLabel") btn_forward.place(width=48, height=32, x=x_menu + 225, y=y_menu + 0) # potentiomètre de volume Chargement en cours @@ -96,11 +110,6 @@ class Pupitre: def mosaique(self): # récupération de la liste des radios (+infos) et affichage de la mosaïque de logos self.logo = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""] with open("./data/radios.csv", 'r', encoding='utf-8-sig') as radios_file: # utf-8-sig au lieu de utf8 pour éviter l'erreur sur le nom du 1er champ '\ufeffNom' radios_list = csv.DictReader(radios_file) radios_list = [dict(ligne) for ligne in radios_list] # transforme en liste de dictionnaires # boucles de remplissage de la mosaïque de logos for y_logo in range(4): # 4 lignes for x_logo in range(5): # 5 colonnes Chargement en cours @@ -110,30 +119,39 @@ class Pupitre: try: if radios_list[num_radio]['Logo'] != "": # si un logo est associé à la radio self.logo[num_radio] = tk.PhotoImage(file="images/" + radios_list[num_radio]['Logo']) else: # si il n'y a pas de logo pour la radio else: # s'il n'y a pas de logo pour la radio self.logo[num_radio] = tk.PhotoImage(file="images/radio.png") # création du bouton avec le logo de la radio btn_logo = tk.Button(self.zone_mosaique, image=self.logo[num_radio]) # utilisation d'une fonction 'lambda' indexée sur la position du logo btn_logo.config( command=lambda flux=radios_list[num_radio]['Url'], num_radio=num_radio: self.radio_selected(flux, num_radio)) num_radio=num_radio: self.radio_selected(num_radio)) btn_logo.place(width=100, height=100, x=x_logo * 100, y=y_logo * 100) except: # quand le nombre de radios est < 20 except: # quand le nombre de radios est < 20 on ne crée pas de bouton pass def radio_selected(self, flux, num_radio): self.radio_flux(flux) def radio_selected(self, num_radio): self.radio_flux(radios_list[num_radio]['Url']) # affichage de la radio sélectionnée with open("./data/radios.csv", 'r', encoding='utf-8-sig') as radios_file: radios_list = csv.DictReader(radios_file) radios_list = [dict(ligne) for ligne in radios_list] # transforme en liste de dictionnaires self.logo_selected = tk.PhotoImage(file="images/Large/" + radios_list[num_radio]['Logo']) self.lbl_radio_selected.config(image=self.logo_selected) # print(radios_list[1]['Nom']) self.lbl_info_radio.config(text=radios_list[num_radio]['Nom'], font=('Helvatical bold', 20)) self.num_radio_selected = num_radio def radio_back(self): # passe à la radio précédente self.num_radio_selected -= 1 if self.num_radio_selected == -1: self.num_radio_selected = nb_radios - 1 self.radio_selected(self.num_radio_selected) def radio_forward(self): # passe à la radio suivante self.num_radio_selected += 1 if self.num_radio_selected == nb_radios: self.num_radio_selected = 0 self.radio_selected(self.num_radio_selected) def switch_sound(self): # bascule on/off du son global mute Chargement en cours
webradiopi.cfg +1 −1 Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff 28 No newline at end of file 72 No newline at end of file