Valider 79a9d8a8 rédigé par Thorfin89's avatar Thorfin89
Parcourir les fichiers

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
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+1 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -21,7 +21,7 @@ class Radio(Pupitre):
        print(flux)
        media = self.instance.media_new(flux)
        self.player.set_media(media)
        self.player.play()
        self.radio_play()

    def radio_play(self):
        self.player.play()
+44 −33
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -4,10 +4,11 @@

# import ----------------------------------
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

mute = False  # le son n'est pas coupé au démarrage
bg_color = "gray"


# classes ---------------------------------
@@ -18,7 +19,7 @@ class Pupitre:
        self.root.title("Web Radio Pi")
        self.root.geometry("800x480")
        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
        self.icon_back = tk.PhotoImage(file="icons/back.png")
@@ -29,42 +30,50 @@ class Pupitre:
        self.icon_sound = tk.PhotoImage(file="icons/sound_up.png")
        self.icon_mute = tk.PhotoImage(file="icons/mute.png")

        self.logox = tk.PhotoImage(file="images/radio.png")

        self.zones()
        self.radios_display()
        self.zones()  # affichage des 3 zones
        self.boutons()  # affichage des boutons
        self.mosaique()  # affichage d'une mosaïque de logos des radios
        self.info()

    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
        bandeau = tk.Frame(self.root, width="800", height="80", bg='gray')
        bandeau.pack(side=TOP)
        self.bandeau = tk.Frame(self.root, bg='gray')
        self.bandeau.place(width="800", height="80", x=0, y=400)

        # fenêtre contenant les boutons (logos) des radios > dim 500x400
        self.zone_logos = tk.Frame(self.root, width="500", height="400", bg='black')
        self.zone_logos.pack(side=LEFT)
    def boutons(self):

        # fenêtre d'affichage de la radio en cours de lecture et des boutons de commande > dim 300x400
        menu = tk.Frame(self.root, width="300", height="400", bg="#D9D9D9")
        menu.pack(side=RIGHT)
        lbl_nom_radio = tk.Label()
        lbl_nom_radio = tk.Label(self.menu, text="INFO", anchor=CENTER)
        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
        x_menu = 0
        y_menu = 240
        y_menu = 290

        # définition d'un style commun à tous les boutons
        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
        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_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_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_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_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)

        # potentiomètre de volume
@@ -73,28 +82,24 @@ class Pupitre:
        volume_init = lecture.read()
        lecture.close()
        # - affichage du potentiomètre de volume
        vol_potar = Scale(menu, from_=0, to=100, tickinterval=20, orient=HORIZONTAL, length=200, label="Volume",
                          command=self.volume)
        vol_potar = Scale(self.menu, from_=0, to=100, tickinterval=20, orient=HORIZONTAL, length=200, label="Volume",
                          command=self.volume, bg=bg_color, highlightthickness=0)
        vol_potar.set(volume_init)
        vol_potar.place(x=x_menu + 30, y=y_menu + 40)

        # 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")
        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
        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)
    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='utf8') as radios_file:
            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 zone des logos
            # 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

@@ -109,10 +114,10 @@ class Pupitre:
                        self.logo[num_radio] = tk.PhotoImage(file="images/blank.png")

                    # création du bouton avec le logo de la radio
                    btn_logo = tk.Button(self.zone_logos, image=self.logo[num_radio])
                    # utilisation de la fonction 'lambda' indexée sur la position du logo
                    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']: 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)

    def switch_sound(self):
@@ -128,5 +133,11 @@ class Pupitre:
            self.btn_mute.config(image=self.icon_sound)  # affichage "logo sound on"
            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):
        self.root.mainloop()
+1 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
86
 No newline at end of file
90
 No newline at end of file