Je suis encore débutant en Python et je ne suis pas encore très à l'aise sur les classes.
J'ai codé un programme qui mesure la température (grâce à un capteur de température, un ADC et une Raspberry Pi) et j'aimerai afficher la courbe de la température dans une interface graphique à l'aide du module Tkinter de Python.
Mon erreur est assez courant je pense et proviens de la ligne où j'appelle une autre fonction dans la même classe. Comment appeler une fonction située dans la même classe ?
Merci d'avance.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import spidev
import time
from Tkinter import *
#ouverture du bus SPI
spi=spidev.SpiDev()
spi.open(0,0)
spi.max_speed_hz=7800000 #ne pas changer cette valeur
#fonction qui lit la donnée de l'ADC
def ReadChannel(channel):
adc=spi.xfer([1,(8+channel)<<4,0])
data=((adc[1]&3)<<8)+adc[2]
return data
class Courbe(Frame):
MAX_WIDTH=800
MAX_HEIGHT=600
def __init__(self):
Frame.__init__(self, width=Courbe.MAX_WIDTH, height=Courbe.MAX_HEIGHT)
x=0
y=0
while x<10:
y=ReadChannel(0) #lecture valeur température
courbe.afficher(x,y)
x=x+1
def afficher (self,x,y):
self.x=x
self.y=y
zero=Courbe.MAX_HEIGHT/2
self.create_oval(x+2,zero+y+2,x+2*2,zero+y+2*2) #on dessine un point
fenetre=Tk()
courbe=Courbe()
courbe.pak()
fenetre.mainloop()
Et voici mon erreur :
Traceback (most recent call last):
File "/home/pi/temp_sensor_interface.py", line 40, in <module>
courbe=Courbe()
File "/home/pi/temp_sensor_interface.py", line 30, in __init__
Bonjour, en fait je pense que tu fais la confusion entre l'objet et la classe. Ici tu vas pas appeler la méthode afficher d'un objet donc tu dois utiliser self
self.afficher(x,y)
NameError: name is not defined
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.