Hola:

Lo primero de todo, me presento. Soy nuevo por aquí.

Y ya metidos en el tema.

Tengo un pequeño dispositivo para leer la temperatura ambiente, através
del puerto usb, emulado a serie. La cuestión es que quiero tener una
pequeña ventana donde se visualice el valor de la temperatura.

Estoy intentando hacerlo de la siguiente manera:

1.- El diseño con glade -> temperatura.glade que transformo a .xml con
gtk-builder-convert
2.- El programa en sí -> temperatura.py

Pero me da un error de "entendimiento".

Os adjunto los archivos y el error que me da.


je...@servidor:~/Programacion/avr/proyectos/Comunicaciones_Serie$ python
termometro.py 
Traceback (most recent call last):
  File "termometro.py", line 81, in evento_leer_temperatura
    Texto= self.label_Temperatura
AttributeError: App instance has no attribute 'label_Temperatura'

Entiendo que me dice que App no tiene el atributo label_Temperatura,
pero....

En fin, gracias de antemano, y un cordial saludo

Jesús Genicio

Attachment: termometro.glade
Description: application/glade

#!/usr/bin/env python

import serial
import time
import cairo
import usb
import glob
import sys
import gobject

try:
     import pygtk
     pygtk.require("2.0")
except:
      pass
try:
    import gtk
    import gtk.glade
except:
    sys.exit(1)



def ftdi():
    busses = usb.busses()
    for bus in busses:
        devices = bus.devices
        for dev in devices:
            if dev.idVendor== 1027 and dev.idProduct== 24577:
                return 1
    return 0

def puertos():

    for i in glob.glob('/dev/ttyUSB*'):
        try:
            Puerto= serial.Serial( i, 19200, timeout= 1)
        except:
            Existe= 0
        else:
            Puerto.write("?")
            idDevice= Puerto.readline(None, "\r")
            if idDevice== "03a5b08768870d3f589cb7088699c989\r":
                Puerto.close()
                return i
    return 0

def conectar():

    if ftdi():
        puerto= puertos()
        if puerto != 0:
            PuertoSerie= serial.Serial(puerto, 19200, timeout= 1)
            while True:
                PuertoSerie.write("T")
                Temp= PuertoSerie.readline( None, "\r")
                print( Temp)
                PuertoSerie.close()
                return Temp


class App:
 
    def __init__(self):

		builder = gtk.Builder()
		builder.add_from_file("termometro.xml") 

		self.window = builder.get_object("Principal")
		builder.connect_signals(self)       
 
    def delete_event(self, widget):
        gtk.main_quit()

    def evento_salir(self, widget):

        gtk.main_quit()
        
    def evento_leer_temperatura(self, widget):
    
        Texto= self.label_Temperatura
        Texto.modify_font(pango.FontDescription("sans 48"))
        Texto.set_text( conectar())
        
    def imprime(self, widget):
        Texto= gtk.label_Temperatura
        Texto.modify_font(pango.FontDescription("sans 48"))
        Texto.set_text( "Hola")
        
    
 

 
if __name__ == "__main__":
    try:
        a = App()
     #   gobject.timeout_add( 1000, a.imprime( a))
        gtk.main()
    except KeyboardInterrupt:
        pass

Attachment: termometro.xml
Description: XML document

_______________________________________________
Python-es mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a