Problème avec widget text et textvariable
Bonjour,
Tout d'abord félicitations pour votre site remarquable !
Je débute en langage python et de ce fait mes connaissances actuelles sont très limitées....:?
Mon problème: je travaille avec une mini ordinateur pcDuino (comparable à un Raspberry Pi) sous LXDE 14.04. Je souhaiterai créer une application (ma première....) pour gérer un futur aquaterrarium.
J'ai parcouru le net et je suis arrivé naturellement à utiliser Python 2.x et Tkinter qui sont installés par défaut sur cette mini carte.
J'ai parcouru de nombreux tutos et je me suis enfin lancé. j'ai réussi à afficher dans une fenêtre la valeur de l'échelon d'une entrée analogique à laquelle est raccordée un capteur de température LM35.
le programme:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
#!/usr/bin/python
#-*- coding: utf-8 -*-
# importation modules
from Tkinter import *
import gpio
from adc import analog_read
import time
#led_pin = "gpio2" # configuration LED sur gpio2
#gpio.pinMode(led_pin, gpio.OUTPUT) # configuration de gpio2 en sortie
def maj():
# on arrive ici toutes les 1000 ms
temperature.set ('Echelon = ' + str(analog_read(2))) # lecture adc2
Mafenetre.after(1000,maj) # boucle toute les 1000 ms
Mafenetre = Tk()
Mafenetre.title("Echelon LM35 sur ADC2") # titre de la fenetre
# Creation d'un widget Label
temperature = StringVar()
Label(Mafenetre,textvariable=temperature).pack(padx=10,pady=10)
maj()
Mafenetre.mainloop() |
Avec ce programme (probablement pas très propre...) l' échelon apparaît dan la fenêtre du terminal et dans ma fenêtre Tkinter ! :D
J'ai voulu améliorer ma petite application pour faire une moyenne sur 64 lectures. J'ai créer une fonction pour affichage dans ma fenêtre..... mais impossible de faire fonctionner....
nouveau programme:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
#!/usr/bin/python
#-*- coding: utf-8 -*-
# importation modules
from Tkinter import *
import gpio
from adc import analog_read
import time
#led_pin = "gpio2" # configuration LED sur gpio2
#gpio.pinMode(led_pin, gpio.OUTPUT) # configuration de gpio2 en sortie
def analog_read64(): # 64 lectures et moyenne
somme_temp = 0
i = 0
while i < 64: # lecture 64 x echelon
temp = analog_read(2) # lecture adc2
somme_temp = somme_temp + temp
i += 1
temp = somme_temp / 64
print temp
def temp_LM35():
temp.set ('Temperature ' + analog_read64())
Mafenetre.after(1000,temp_LM35) # boucle toutes les secondes
Mafenetre = Tk()
Mafenetre.title("Moyenne echelon LM35") # titre de la fenetre
# Creation d'un widget Label
temp = StringVar()
Label(Mafenetre,textvariable=temp).pack(padx=10,pady=10)
temp_LM35()
Mafenetre.mainloop() |
J'obtiens l'erreur
Citation:
Traceback (most recent call last):
File "Affichage moyenne echelon LM35.py", line 35, in <module>
temp_LM35()
File "Affichage moyenne echelon LM35.py", line 25, in temp_LM35
temp.set ('Temperature ' + analog_read64())
TypeError: cannot concatenate 'str' and 'NoneType' objects
Un problème de type de variable que je n'arrive pas à résoudre malgré toutes mes recherches sur le net....
Merci de votre aide afin de m'orienter sur une solution ainsi que sur les notions élémentaires qui m'échappent !
Cordialement