Python guizero et slider

Photographie ultra-rapide, pilotage d'imprimante 3D ou de CNC, fabrication de bière.... Enfin tout ce que le Raspberry peut gérer trouvera sa place dans cette rubrique

Modérateur : Francois

Répondre
caways
Messages : 9
Enregistré le : lun. 30 mai 2016 14:50

Python guizero et slider

Message par caways » dim. 26 févr. 2023 19:47

Bonjour à tou(te)s,

J'ai le projet de réaliser un réveil matin à base de Raspberry.
Je compte utiliser un écran tactile pour afficher l'heure et utiliser 2 "sliders" pour régler l'heure et les minutes du réveil.
J'utilise la librairie guizero mais, je ne parviens pas à récupérer la valeur du slider pour la réutiliser ultérieurement.
J'ai rédiger un petit programme en python mais pas moyen de trouver la méthode pour récupérer la valeur x qui reste toujours égale à 0 même si le curseur varie.

Pouvez-vous m'éclairer ?

Merci d'avance.

Caways.

Voici le programme :

from guizero import App, Text, Slider, TextBox, PushButton
import datetime

x = 0

def counter():
text_heure.value= datetime.datetime.now().strftime("%H:%M")

def slider_changed(slider_value):
global x
x = slider_value


def attrib() :
print(x)



app = App("Hello world")
text_heure = Text(app, text=datetime.datetime.now())


text_heure.repeat(1000, counter)
slider = Slider(app, command=slider_changed)
button=PushButton(app,attrib,text="Go")

print(x)


app.display()

domi
Administrateur
Messages : 3233
Enregistré le : mer. 17 sept. 2014 18:12
Localisation : Seine et Marne

Re: Python guizero et slider

Message par domi » dim. 26 févr. 2023 20:03

Bonjour
Ce message n'ayant pas sa place dans la section débutant, je déplace le sujet.

Merci de prêter attention aux rubriques afin qu'elles répondent au mieux à votre demande.
Passionné de Raspberry, Arduino, ESP8266, ESP32, et objets connectés :
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY
Conception d'une station météo DIY, et envoi des infos à votre Domotique.

piper
Raspinaute
Messages : 656
Enregistré le : sam. 5 juin 2021 18:57

Re: Python guizero et slider

Message par piper » dim. 26 févr. 2023 20:18

Si possible mettre le code entre </> car sans cela, on ne voit pas les indentations
Hors les indentations sur Python identifient les blocks d'instruction
Sans cette information, le code est incompréhensible ou inutilisable tel quel

Ex :
def counter():
a=datetime.datetime.now().strftime("%H:%M")

Ceci provoque une erreur : la fonction counter n'est pas définie

Alors que ceci fonctionne :

Code : Tout sélectionner

def counter():
    a=datetime.datetime.now().strftime("%H:%M")
3 Pi4 : Emby / Samba , Librelec, Android TV
3 Pi3 : Hifiberry /OSMC, Games station, Samba / VPN / HotSpot Wifi
2 Pi2 : RFID, radio reveil (PiReveil)
1 Pi0 : traker GPS et acquisitions
1 Pi0 2W : tests divers
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32

caways
Messages : 9
Enregistré le : lun. 30 mai 2016 14:50

Re: Python guizero et slider

Message par caways » lun. 27 févr. 2023 20:39

Bonsoir,

J'ai un peu avancé sur le programme.
Qu'en pensez-vous ?

Bonne soirée,

Caways

Code : Tout sélectionner

from guizero import App, Text, Slider, TextBox, PushButton
import datetime

x = 0
y = 0
heure = 0
minute = 0


def counter():
    global heure
    global minute
    text_heure.value= datetime.datetime.now().strftime("%H:%M")
    heure = int(datetime.datetime.now().strftime("%H"))
    minute = int(datetime.datetime.now().strftime("%M"))

def slider_changed(slider_value):
    global x
    x = int(slider_value)

def slider1_changed(slider1_value):
    global y
    y = int(slider1_value)


def attrib() :
    print("x : ",x)
    print("y : ",y)
    
    if ((x == heure) and (y == minute)) :
        print("Levez-vous")
    else :
        print("dormez")

app = App("Hello world")
text_heure = Text(app, text=datetime.datetime.now())


text_heure.repeat(1000, counter)

slider = Slider(app, command=slider_changed)
slider1 = Slider(app, command=slider1_changed)
#button=PushButton(app,attrib,text="Go")

app.repeat(1000,attrib)


          
app.display()


          

piper
Raspinaute
Messages : 656
Enregistré le : sam. 5 juin 2021 18:57

Re: Python guizero et slider

Message par piper » mer. 1 mars 2023 23:40

C'est un début
Mais là, cela doit fonctionner normalement.
Comme je déteste l'utilisation des variables globales, voici une version (à l'arrache) en ne les utilisant pas, juste avec un objet basique que tu puisses voir que ce n'est pas compliqué d'utiliser des objets et que c'est une bonne habitude à prendre : cela rend la lecture du code beaucoup plus simple.

Code : Tout sélectionner

from guizero import App, Text, Slider, TextBox, PushButton
import datetime

class thedata():
    def __init__(self, x,y,heure,minute):
        self.x = x
        self.y = y
        self.heure = heure
        self.minute = minute
        
    def attrib(self) :
        print("x : ",self.x)
        print("y : ",self.y) 
        if ((self.x == self.heure) and (self.y == self.minute)) :
            print("Levez-vous")
        else :
            print("dormez")

def counter():
    text_heure.value= datetime.datetime.now().strftime("%H:%M")
    mydata.heure = int(datetime.datetime.now().strftime("%H"))
    mydata.minute = int(datetime.datetime.now().strftime("%M"))

def slider_changed(slider_value):
    mydata.x = int(slider_value)

def slider1_changed(slider1_value):
    mydata.y = int(slider1_value)

app = App("Hello world")
text_heure = Text(app, text=datetime.datetime.now())
mydata=thedata(0,0,0,0)

text_heure.repeat(1000, counter)

slider = Slider(app, command=slider_changed)
slider1 = Slider(app, command=slider1_changed)
#button=PushButton(app,attrib,text="Go")
app.repeat(1000,mydata.attrib)
         
app.display()
3 Pi4 : Emby / Samba , Librelec, Android TV
3 Pi3 : Hifiberry /OSMC, Games station, Samba / VPN / HotSpot Wifi
2 Pi2 : RFID, radio reveil (PiReveil)
1 Pi0 : traker GPS et acquisitions
1 Pi0 2W : tests divers
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32

caways
Messages : 9
Enregistré le : lun. 30 mai 2016 14:50

Re: Python guizero et slider

Message par caways » ven. 3 mars 2023 22:17

Bonsoir,

Merci pour ton intervention.
Je vais regarder cela de plus près.

Je suis débutant avec python et rencontre régulièrement des problèmes de déclarations de variables et d'interaction de celles-ci entre les différentes fonctions.

Encore un grand merci.

Caways

piper
Raspinaute
Messages : 656
Enregistré le : sam. 5 juin 2021 18:57

Re: Python guizero et slider

Message par piper » sam. 4 mars 2023 09:11

Bonjour,
Oui, j'ai déjà rencontré cela.
Soit de manière temporaire (au boot par exemple, pendant quelques secondes)
Soit de manière quasi permanente.

Et comme j'en ai eu marre, j'ai acheté , il y a des années ceci pour en avoir le coeur net (image)
Là, j'ai compris que connecter un disque USB 2,5 pouces mécanique au Raspberry n'est pas une bonne idée (ce type disque n'a qu'une prise : son USB et son alimentation se fait donc par le Raspberry)
Et que entre 2 alimentations officielles, on peut avoir des surprises
Image
3 Pi4 : Emby / Samba , Librelec, Android TV
3 Pi3 : Hifiberry /OSMC, Games station, Samba / VPN / HotSpot Wifi
2 Pi2 : RFID, radio reveil (PiReveil)
1 Pi0 : traker GPS et acquisitions
1 Pi0 2W : tests divers
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32

Répondre

Retourner vers « Les applications spécialisées du Raspberry Pi »