Commit 79a9d8a8 authored by Thorfin89's avatar Thorfin89

Amélioration de la déco.

Placement du bandeau en bas et affichage d'une fenêtre d'info au-dessus des boutons
parent 47875f15
...@@ -21,7 +21,7 @@ class Radio(Pupitre): ...@@ -21,7 +21,7 @@ class Radio(Pupitre):
print(flux) print(flux)
media = self.instance.media_new(flux) media = self.instance.media_new(flux)
self.player.set_media(media) self.player.set_media(media)
self.player.play() self.radio_play()
def radio_play(self): def radio_play(self):
self.player.play() self.player.play()
......
...@@ -4,10 +4,11 @@ ...@@ -4,10 +4,11 @@
# import ---------------------------------- # import ----------------------------------
import tkinter as tk import tkinter as tk
from tkinter import ttk, Scale, HORIZONTAL, CENTER, LEFT, RIGHT, TOP from tkinter import ttk, Scale, HORIZONTAL, CENTER, LEFT, RIGHT, BOTTOM, TOP
import csv import csv
mute = False # le son n'est pas coupé au démarrage mute = False # le son n'est pas coupé au démarrage
bg_color = "gray"
# classes --------------------------------- # classes ---------------------------------
...@@ -18,7 +19,7 @@ class Pupitre: ...@@ -18,7 +19,7 @@ class Pupitre:
self.root.title("Web Radio Pi") self.root.title("Web Radio Pi")
self.root.geometry("800x480") self.root.geometry("800x480")
self.root.resizable(width=False, height=False) self.root.resizable(width=False, height=False)
self.root.attributes('-fullscreen', False) # < A basculer sur False pour les test sur PC self.root.attributes('-fullscreen', False) # < à basculer sur False pour les tests sur PC
# images des boutons # images des boutons
self.icon_back = tk.PhotoImage(file="icons/back.png") self.icon_back = tk.PhotoImage(file="icons/back.png")
...@@ -29,42 +30,50 @@ class Pupitre: ...@@ -29,42 +30,50 @@ class Pupitre:
self.icon_sound = tk.PhotoImage(file="icons/sound_up.png") self.icon_sound = tk.PhotoImage(file="icons/sound_up.png")
self.icon_mute = tk.PhotoImage(file="icons/mute.png") self.icon_mute = tk.PhotoImage(file="icons/mute.png")
self.logox = tk.PhotoImage(file="images/radio.png") self.zones() # affichage des 3 zones
self.boutons() # affichage des boutons
self.zones() self.mosaique() # affichage d'une mosaïque de logos des radios
self.radios_display() self.info()
def zones(self): def zones(self):
# fenêtre contenant la mosaïque de logos des radios > dim 500x400
self.zone_mosaique = tk.Frame(self.root, bg='black')
self.zone_mosaique.place(width="500", height="400", x=0, y=0)
# fenêtre d'affichage de la radio en cours de lecture et des boutons de commande > dim 300x400
self.menu = tk.Frame(self.root, width="300", height="400", bg=bg_color)
self.menu.place(width="300", height="400", x=501, y=0)
# fenêtre Haute : Titre / Menu > dim 800x80 # fenêtre Haute : Titre / Menu > dim 800x80
bandeau = tk.Frame(self.root, width="800", height="80", bg='gray') self.bandeau = tk.Frame(self.root, bg='gray')
bandeau.pack(side=TOP) self.bandeau.place(width="800", height="80", x=0, y=400)
# fenêtre contenant les boutons (logos) des radios > dim 500x400 def boutons(self):
self.zone_logos = tk.Frame(self.root, width="500", height="400", bg='black')
self.zone_logos.pack(side=LEFT)
# fenêtre d'affichage de la radio en cours de lecture et des boutons de commande > dim 300x400 lbl_nom_radio = tk.Label()
menu = tk.Frame(self.root, width="300", height="400", bg="#D9D9D9") lbl_nom_radio = tk.Label(self.menu, text="INFO", anchor=CENTER)
menu.pack(side=RIGHT) lbl_nom_radio.config(bg="white", fg="gray")
lbl_nom_radio.place(width=200, height=200, x=50, y=50)
# Position d'origine du menu # Position d'origine du menu
x_menu = 0 x_menu = 0
y_menu = 240 y_menu = 290
# définition d'un style commun à tous les boutons # définition d'un style commun à tous les boutons
style = ttk.Style() style = ttk.Style()
style.configure("BW.TLabel", foreground="black", background="#D9D9D9") style.configure("BW.TLabel", foreground="black", background=bg_color)
# affichage des boutons de commande : back, pause, play, stop, forward # affichage des boutons de commande : back, pause, play, stop, forward
btn_back = ttk.Button(menu, image=self.icon_back, text="Back", command=None, style="BW.TLabel") btn_back = ttk.Button(self.menu, image=self.icon_back, text="Back", command=None, style="BW.TLabel")
btn_back.place(width=48, height=32, x=x_menu + 30, y=y_menu + 0) btn_back.place(width=48, height=32, x=x_menu + 30, y=y_menu + 0)
btn_play = ttk.Button(menu, image=self.icon_pause, text="Pause", command=self.radio_pause, style="BW.TLabel") btn_play = ttk.Button(self.menu, image=self.icon_pause, text="Pause", command=self.radio_pause,
style="BW.TLabel")
btn_play.place(width=32, height=32, x=x_menu + 90, y=y_menu + 0) btn_play.place(width=32, height=32, x=x_menu + 90, y=y_menu + 0)
btn_pause = ttk.Button(menu, image=self.icon_play, text="Play", command=self.radio_play, style="BW.TLabel") btn_pause = ttk.Button(self.menu, image=self.icon_play, text="Play", command=self.radio_play, style="BW.TLabel")
btn_pause.place(width=32, height=32, x=x_menu + 135, y=y_menu + 0) btn_pause.place(width=32, height=32, x=x_menu + 135, y=y_menu + 0)
btn_stop = ttk.Button(menu, image=self.icon_stop, text="Stop", command=self.radio_stop, style="BW.TLabel") btn_stop = ttk.Button(self.menu, image=self.icon_stop, text="Stop", command=self.radio_stop, style="BW.TLabel")
btn_stop.place(width=32, height=32, x=x_menu + 178, y=y_menu + 0) btn_stop.place(width=32, height=32, x=x_menu + 178, y=y_menu + 0)
btn_forward = ttk.Button(menu, image=self.icon_forward, text="Forward", command=None, style="BW.TLabel") btn_forward = ttk.Button(self.menu, image=self.icon_forward, text="Forward", command=None, style="BW.TLabel")
btn_forward.place(width=48, height=32, x=x_menu + 225, y=y_menu + 0) btn_forward.place(width=48, height=32, x=x_menu + 225, y=y_menu + 0)
# potentiomètre de volume # potentiomètre de volume
...@@ -73,28 +82,24 @@ class Pupitre: ...@@ -73,28 +82,24 @@ class Pupitre:
volume_init = lecture.read() volume_init = lecture.read()
lecture.close() lecture.close()
# - affichage du potentiomètre de volume # - affichage du potentiomètre de volume
vol_potar = Scale(menu, from_=0, to=100, tickinterval=20, orient=HORIZONTAL, length=200, label="Volume", vol_potar = Scale(self.menu, from_=0, to=100, tickinterval=20, orient=HORIZONTAL, length=200, label="Volume",
command=self.volume) command=self.volume, bg=bg_color, highlightthickness=0)
vol_potar.set(volume_init) vol_potar.set(volume_init)
vol_potar.place(x=x_menu + 30, y=y_menu + 40) vol_potar.place(x=x_menu + 30, y=y_menu + 40)
# boutons de coupure et rétablissement du son # boutons de coupure et rétablissement du son
self.btn_mute = ttk.Button(menu, image=self.icon_sound, text="Mute", command=self.switch_sound, self.btn_mute = ttk.Button(self.menu, image=self.icon_sound, text="Mute", command=self.switch_sound,
style="BW.TLabel") style="BW.TLabel")
self.btn_mute.place(width=40, height=32, x=x_menu + 245, y=y_menu + 70) self.btn_mute.place(width=40, height=32, x=x_menu + 245, y=y_menu + 70)
# affichage de l'info sur l'application dans le bas def mosaique(self): # récupération de la liste des radios (+infos) et affichage de la mosaïque de logos
lbl_info = ttk.Label(menu, text="WebRadioPi © Thorfin89", anchor=CENTER)
lbl_info.place(width=300, height=16, x=x_menu + 0, y=y_menu + 140)
def radios_display(self): # récupération de la liste des radios (+infos)
self.logo = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""] self.logo = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]
with open("./data/radios.csv", 'r', encoding='utf8') as radios_file: with open("./data/radios.csv", 'r', encoding='utf8') as radios_file:
radios_list = csv.DictReader(radios_file) radios_list = csv.DictReader(radios_file)
radios_list = [dict(ligne) for ligne in radios_list] # transforme en liste de dictionnaires radios_list = [dict(ligne) for ligne in radios_list] # transforme en liste de dictionnaires
# boucles de remplissage de la zone des logos # boucles de remplissage de la mosaïque de logos
for y_logo in range(4): # 4 lignes for y_logo in range(4): # 4 lignes
for x_logo in range(5): # 5 colonnes for x_logo in range(5): # 5 colonnes
...@@ -109,10 +114,10 @@ class Pupitre: ...@@ -109,10 +114,10 @@ class Pupitre:
self.logo[num_radio] = tk.PhotoImage(file="images/blank.png") self.logo[num_radio] = tk.PhotoImage(file="images/blank.png")
# création du bouton avec le logo de la radio # création du bouton avec le logo de la radio
btn_logo = tk.Button(self.zone_logos, image=self.logo[num_radio]) btn_logo = tk.Button(self.zone_mosaique, image=self.logo[num_radio])
# utilisation de la fonction 'lambda' indexée sur la position du logo # utilisation d'une fonction 'lambda' indexée sur la position du logo
btn_logo.config( btn_logo.config(
command=lambda flux=radios_list[num_radio]['Url']: self.radio_flux(flux)) # <<< fonction à préciser command=lambda flux=radios_list[num_radio]['Url']: self.radio_flux(flux))
btn_logo.place(width=100, height=100, x=x_logo * 100, y=y_logo * 100) btn_logo.place(width=100, height=100, x=x_logo * 100, y=y_logo * 100)
def switch_sound(self): def switch_sound(self):
...@@ -128,5 +133,11 @@ class Pupitre: ...@@ -128,5 +133,11 @@ class Pupitre:
self.btn_mute.config(image=self.icon_sound) # affichage "logo sound on" self.btn_mute.config(image=self.icon_sound) # affichage "logo sound on"
mute = False mute = False
def info(self):
# affichage de l'info sur l'application dans le bas
lbl_info = tk.Label(self.bandeau, text="WebRadioPi © Thorfin89", anchor=CENTER)
lbl_info.config(bg="gray51", fg="white")
lbl_info.place(width=180, height=16, x=620, y=60)
def boucle(self): def boucle(self):
self.root.mainloop() self.root.mainloop()
86 90
\ No newline at end of file \ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment