Valider 9577a5d6 rédigé par Thorfin89's avatar Thorfin89
Parcourir les fichiers

Nettoyage du code (encore :-) )

parent 7b7f772e
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
54
 No newline at end of file
60
 No newline at end of file
(9,14 ko)

Fichier déplacé.

(9,01 ko)

Fichier déplacé.

+6 −6
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -3,7 +3,7 @@
# Auteur  : Daniel SAZERAT (thorfin89@free.fr)

# import ----------------------------------
from vlc import Instance
import vlc
''' installer le paquet python-vlc :
    $ sudo pip3 install python-vlc
    installer aussi l'application VLC '''
@@ -15,7 +15,7 @@ from pupitre import Pupitre # gestion de l'interface sous Tkinter
class Radio(Pupitre):
    def __init__(self):
        super().__init__()  # constructeur de la classe parente
        self.instance = Instance()
        self.instance = vlc.Instance()
        self.player = self.instance.media_player_new()

    def radio_flux(self, flux):
@@ -56,13 +56,13 @@ class Radio(Pupitre):
        config_file.close()
        self.player.audio_set_volume(volume_init)

    def radio_forward(self):  # passe à la radio suivante
    def next_radio(self):  # passe à la radio suivante
        self.num_radio_selected += 1

        # changement de page automatique
        if self.num_radio_selected % 20 == 0 and self.num_radio_selected < self.nb_radios:
            # si le numéro est un multiple de 20 et qu'on n'est pas au bout de la liste
            self.page_forward()
            self.next_page()

        if self.num_radio_selected == self.nb_radios:  # si on arrive à la fin de la liste
            self.num_radio_selected = 0
@@ -71,14 +71,14 @@ class Radio(Pupitre):

        self.radio_selected(self.num_radio_selected)

    def radio_back(self):  # passe à la radio précédente
    def previous_radio(self):  # passe à la radio précédente
        self.num_radio_selected -= 1
        print(self.num_radio_selected)

        # changement de page automatique
        if (
                self.num_radio_selected + 1) % 20 == 0 and self.num_radio_selected != -1:  # si le numéro est un multiple de 20
            self.page_back()
            self.previous_page()

        if self.num_radio_selected == -1:
            self.num_radio_selected = self.nb_radios - 1
+61 −58
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -5,9 +5,9 @@
# import ----------------------------------
import tkinter as tk
from tkinter import ttk, Scale, HORIZONTAL
from PIL import Image, ImageTk
import csv
from vlc import Meta
import vlc
from PIL import Image, ImageTk

mute = False  # le son n'est pas coupé au démarrage
radio_on = False  # mémorise le fait d'écouter une radio ou pas
@@ -39,30 +39,10 @@ class Pupitre:
        self.root.attributes('-fullscreen', False)  # < à basculer sur False pour les tests sur PC
        self.root.config(bg=bg_color)

        # logos des boutons
        self.icon_back = tk.PhotoImage(file="./icons/back.png")
        self.icon_play = tk.PhotoImage(file="./icons/play.png")
        self.icon_pause = tk.PhotoImage(file="./icons/pause.png")
        self.icon_stop = tk.PhotoImage(file="./icons/stop.png")
        self.icon_forward = tk.PhotoImage(file="./icons/forward.png")
        self.icon_sound = tk.PhotoImage(file="./icons/sound_up.png")
        self.icon_mute = tk.PhotoImage(file="./icons/mute.png")
        self.icon_pageb = tk.PhotoImage(file="./icons/pageb.png")
        self.icon_pagef = tk.PhotoImage(file="./icons/pagef.png")

        self.zones()  # affichage des 3 zones
        self.mosaique()  # affichage d'une mosaïque de logos des radios
        self.boutons()  # affichage des boutons
        self.menu_droite()  # affichage de la radio choisie
        self.radio_name()  # affichage de l'info sur l'application

        self.num_radio_selected = 0

    def zones(self):

        # ==== ZONES DE WIDGETS ==========================================
        # fenêtre contenant la mosaïque de logos des radios > dim 500x400
        self.zone_mosaique = tk.Frame(self.root, bg="lightgray")
        self.zone_mosaique.place(width="500", height="400", x=10, y=10)
        self.logos = tk.Frame(self.root, bg="lightgray")
        self.logos.place(width="500", height="400", x=10, y=10)

        # fenêtre d'affichage de la radio en cours de lecture et des boutons de commande > dim 300x400
        self.menu = tk.Frame(self.root, bg=bg_color)
@@ -72,19 +52,41 @@ class Pupitre:
        self.bandeau = tk.Frame(self.root, bg=bg_color)
        self.bandeau.place(width="510", height="60", x=0, y=420)

    def boutons(self):
        # ==== FONCTIONS =================================================
        self.mosaique()  # affichage d'une mosaïque de logos des radios
        self.right_panel()  # affichage de la radio choisie
        self.radio_name()  # affichage de l'info sur l'application

        self.num_radio_selected = 0

        # ==== BOUTONS ===================================================
        # Logos des boutons
        self.icon_play = tk.PhotoImage(file="./icons/play.png")
        self.icon_pause = tk.PhotoImage(file="./icons/pause.png")
        self.icon_stop = tk.PhotoImage(file="./icons/stop.png")

        self.icon_previous_radio = tk.PhotoImage(file="./icons/back.png")
        self.icon_next_radio = tk.PhotoImage(file="./icons/forward.png")

        self.icon_previous_page = tk.PhotoImage(file="icons/previous_page.png")
        self.icon_next_page = tk.PhotoImage(file="icons/next_page.png")

        self.icon_sound = tk.PhotoImage(file="./icons/sound_up.png")
        self.icon_mute = tk.PhotoImage(file="./icons/mute.png")

        # définition d'un style commun à tous les boutons
        style = ttk.Style()
        style.configure("BW.TLabel", foreground="black", background=bg_color)

        # bouton page arrière
        btn_pageb = ttk.Button(self.bandeau, image=self.icon_pageb, command=self.page_back, style="BW.TLabel")
        btn_pageb.place(width=40, height=32, x=40, y=10)
        # bouton page précédente
        btn_previous_page = ttk.Button(self.bandeau, image=self.icon_previous_page,
                                       command=self.previous_page, style="BW.TLabel")
        btn_previous_page.place(width=40, height=32, x=40, y=10)

        # boutons radio arrière
        btn_back = ttk.Button(self.bandeau, image=self.icon_back, command=self.radio_back, style="BW.TLabel")
        btn_back.place(width=48, height=32, x=105, y=10)
        # boutons radio précédente
        btn_previous_radio = ttk.Button(self.bandeau, image=self.icon_previous_radio,
                                        command=self.previous_radio, style="BW.TLabel")
        btn_previous_radio.place(width=48, height=32, x=105, y=10)

        # bouton pause
        btn_play = ttk.Button(self.bandeau, image=self.icon_pause, command=self.radio_pause, style="BW.TLabel")
@@ -98,21 +100,26 @@ class Pupitre:
        btn_stop = ttk.Button(self.bandeau, image=self.icon_stop, command=self.radio_stop, style="BW.TLabel")
        btn_stop.place(width=32, height=32, x=304, y=10)

        # bouton radio avant
        btn_forward = ttk.Button(self.bandeau, image=self.icon_forward, command=self.radio_forward, style="BW.TLabel")
        btn_forward.place(width=48, height=32, x=367, y=10)
        # bouton radio suivante
        btn_next_radio = ttk.Button(self.bandeau, image=self.icon_next_radio, command=self.next_radio,
                                    style="BW.TLabel")
        btn_next_radio.place(width=48, height=32, x=367, y=10)

        # bouton page suivante
        btn_next_page = ttk.Button(self.bandeau, image=self.icon_next_page, command=self.next_page, style="BW.TLabel")
        btn_next_page.place(width=40, height=32, x=440, y=10)

        # bouton page avant
        btn_pagef = ttk.Button(self.bandeau, image=self.icon_pagef, command=self.page_forward, style="BW.TLabel")
        btn_pagef.place(width=40, height=32, x=440, y=10)
        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=30, height=32, x=233, y=430)

    def menu_droite(self):
    def right_panel(self):

        # affiche du logo de la radio sélectionnée >>> placer ici l'icone de la radio en 200x200
        # affiche du logo de la radio sélectionnée
        self.lbl_radio_logo = ttk.Label(self.menu, background=bg_color_light)
        self.lbl_radio_logo.place(width=225, height=225, x=33, y=33)

        # affiche le noù de la radio
        # affiche le nom de la radio
        self.lbl_radio_name = tk.Label(self.menu)
        self.lbl_radio_name.place(width=270, height=30, x=10, y=270)
        self.lbl_radio_name.config(font=('Helvetica', 16), bg=bg_color, fg="white")
@@ -123,11 +130,10 @@ class Pupitre:
        self.lbl_radio_info.config(font=('Helvetica', 10), anchor="n", bg=bg_color, fg="white", wraplength=240)

        # potentiomètre de volume
        # - on charge la configuration du volume sauvegardée
        lecture = open("config/webradiopi.cfg", "r")
        lecture = open("config/webradiopi.cfg", "r")  # on charge la configuration du volume sauvegardée
        volume_init = lecture.read()
        lecture.close()
        # - affichage du potentiomètre de volume

        vol_potar = Scale(self.menu, from_=0, to=100, tickinterval=20, orient=HORIZONTAL,
                          length=190, label="Volume", command=self.volume,
                          bg=bg_color, fg="white", highlightthickness=0)
@@ -135,9 +141,6 @@ class Pupitre:
        vol_potar.place(x=30, y=400)

        # boutons de coupure et rétablissement du son
        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=30, height=32, x=233, y=430)

    def mosaique(self):  # récupération de la liste des radios (+infos) et affichage de la mosaïque de logos

@@ -165,7 +168,7 @@ class Pupitre:
                    self.logo[num_case] = ImageTk.PhotoImage(img)

                    # création du bouton avec le logo de la radio
                    btn_logo = tk.Button(self.zone_mosaique, image=self.logo[num_case])
                    btn_logo = tk.Button(self.logos, image=self.logo[num_case])

                    # utilisation d'une fonction 'lambda' indexée sur la position du logo
                    btn_logo.config(command=lambda flux=radios_list[num_radio]['Url'],
@@ -212,14 +215,14 @@ class Pupitre:
            self.btn_mute.config(image=self.icon_sound)  # affichage "logo sound on"
            mute = False

    def page_back(self):  # commande de page en arrière
    def previous_page(self):  # commande de page en arrière
        self.current_page -= 1
        if self.current_page < 0:  # Quand tente de remonter avant la première page (page 0)
            self.current_page = self.nb_pages  # on boucle sur la dernière

        self.mosaique()

    def page_forward(self):  # commande page en avant
    def next_page(self):  # commande page en avant
        self.current_page += 1
        if self.current_page > self.nb_pages:  # quand on avance au-delà de la dernière page
            self.current_page = 0  # on revient à la première
@@ -234,7 +237,7 @@ class Pupitre:
    def radio_info(self):

        if self.radio_on:  # si on a une radio en cours d'écoute
            flux_info = self.media.get_meta(Meta.NowPlaying)  # on récupère l'info sur le titre actuel
            flux_info = self.media.get_meta(vlc.Meta.NowPlaying)  # on récupère l'info sur le titre actuel

            if flux_info:  # si on a bien une information sur le titre
                longueur = len(flux_info)