Python guizero et slider
Modérateur : Francois
Python guizero et slider
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()
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()
-
- Administrateur
- Messages : 3200
- Enregistré le : mer. 17 sept. 2014 18:12
- Localisation : Seine et Marne
Re: Python guizero et slider
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.
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.
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.
Re: Python guizero et slider
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 :
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")
1 Pi 4 Emby / Samba
1 Pi4 Librelec
1 Pi3 / Hifiberry OSMC
1 Pi0 : traker GPS et acquisitions de données moteur automobile
1 Pi 2 : pilotage de serrures / RFID
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32
1 Pi4 Librelec
1 Pi3 / Hifiberry OSMC
1 Pi0 : traker GPS et acquisitions de données moteur automobile
1 Pi 2 : pilotage de serrures / RFID
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32
Re: Python guizero et slider
Bonsoir,
J'ai un peu avancé sur le programme.
Qu'en pensez-vous ?
Bonne soirée,
Caways
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()
Re: Python guizero et slider
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.
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()
1 Pi 4 Emby / Samba
1 Pi4 Librelec
1 Pi3 / Hifiberry OSMC
1 Pi0 : traker GPS et acquisitions de données moteur automobile
1 Pi 2 : pilotage de serrures / RFID
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32
1 Pi4 Librelec
1 Pi3 / Hifiberry OSMC
1 Pi0 : traker GPS et acquisitions de données moteur automobile
1 Pi 2 : pilotage de serrures / RFID
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32
Re: Python guizero et slider
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
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
Re: Python guizero et slider
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

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

1 Pi 4 Emby / Samba
1 Pi4 Librelec
1 Pi3 / Hifiberry OSMC
1 Pi0 : traker GPS et acquisitions de données moteur automobile
1 Pi 2 : pilotage de serrures / RFID
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32
1 Pi4 Librelec
1 Pi3 / Hifiberry OSMC
1 Pi0 : traker GPS et acquisitions de données moteur automobile
1 Pi 2 : pilotage de serrures / RFID
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32