tkinter en python
Abel Aranda
Abel.aranda en salud.madrid.org
Mie Mayo 18 21:16:44 CEST 2005
Buenas tardes, al final lo solucione utilizando un thread, pero sigo con
la varios problemas....
Tengo el siguiente código.
Esta parte me dibuja los checkbuttons
global Maquinas
for i in Maquinas:
self.checkObjects.append(StringVar())
self.oneObject =
Checkbutton(self.personalFrame,text=i.nombre,variable=self.checkObject
s[-1],anchor='e',onvalue=i.nombre, offvalue="",command =
self.pulsar,foreground = "#FF0000")
self.listaobjetos.append(self.oneObject)
for i,cb in enumerate(self.listaobjetos):
cb.grid(column=i % 4, row=i / 4,sticky = W)
Maquinas[i].posx = i / 4
Maquinas[i].posy = i % 4
Y un tread lanzado
def threads(self):
print "lanzando"
global Maquinas
self.threadping = threading.Thread(target=self.run)
self.threadping.start()
ambos dentro del mismo objeto
la cuestion es que desde el trhead quiero modificar la aplicación
grafica, cambiar el color de un checkburron ( es una maquina ) cuando se
pierda conectividad con ella, y no se como hacerlo
cada vez que utilizo el metodo boton.grid me da un error desde el thread
mi idea seria hacer algo asi
def run(self)
if maquina se cae:
self.listaobjetos.eliminar_dicho_objeto
self.listaobjetos.insertar_en_la_posicion_en la que
estaba el
objeto anterior el nuevo pero con un color diferente.
Volver a pintarlo en la posición gris del anterior
Hacer algo parecido a un root.update() para que coja los
cambios
A ver si hay suerte y alguien puede echarme una mano.
Lo del sondeo lo solucione con el trhead, es un bucle infinito que al
final tiene un sleep de 20 sg y después de eso sondeo una variable
global para ver si he de salir del thread y terminar su ejecución.
Un Saludo
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Abel Aranda Arriscado
Administrador
CEDAS
Centro de Datos, Administración y Soporte
e-mail: abel.aranda en salud.madrid.org
tfno: 91 4265549, móvil: 670726950
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
El contenido de esta comunicación debe considerarse privado y
confidencial. Si Vd. no es el destinatario y la hubiere recibido por
error, se le informa que cualquier divulgación, distribución o copia de
esta comunicación está estrictamente prohibida; por favor, notifíquelo
inmediatamente al remitente y elimine este mensaje.
This Email is intended for the exclusive use of the addressee only. If
you are not the intended recipient, you should not use the contents nor
disclose them to any other person and you should immediately notify the
sender and delete the Email.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-----Mensaje original-----
De: python-es-bounces en aditel.org [mailto:python-es-bounces en aditel.org]
En nombre de Ernesto Revilla
Enviado el: lunes, 16 de mayo de 2005 23:20
Para: La lista de python en castellano
Asunto: Re: [Python-es] tkinter en python
En tkinter:
class Application:
pollInterval=100 # intervalo de poll en milisegundos
def __init__(self):
self.root=self.createMainWindow()
# cualquier cosa aquí
self.pollTaks()
def createMainWindow(self):
root=Tkinter.Tk()
# cualquier cosa para construir interfaz
...
return root
def pollTask(self):
# haz lo que quieras aquí
...
# casda
self.root.after(self.pollInterval,self.pollTask)
es decir, usas .after de Tkinter.Tk o cualquier otro widget que hayas
creado. La sintaxis es:
widget.after(intervaloEnMilisegundos, metodo, argumento1,
argumento2....). El propio procedimiento tiene que reregistrarse con
after si se desea que sea periódico.
Tkinter sólo te va a asegurar que el método no se va a llamar antes. Si
está ocupado no va a llamar a la función.
Sacado de:
http://www.pythonware.com/library/tkinter/introduction/
en concreto:
http://www.pythonware.com/library/tkinter/introduction/x9507-alarm-handl
ers-and-other.htm
Erny
Aranda Arriscado, Abel escribió:
>
>buenas sigo realizando una plicacion con python y me encuentro con el
siguiente problema,un treao d y la aplicación grafica, y lo que deseo es
que la aplicacion grafica sondee cada cierto tiempo una variable
global(siempre va a leer de ella nunca escribir).
>
>Alguno tiene idea de como se puede hacer esto de forma predeterminada,
algun metodo para que lo estee sondeando desde que arranco la aplicacion
pero que no me kite el control de esta, por ejemplo que lo sondee cada
20 segundos pero pueda seguir trabajando con la aplicacion grafica.
>
>
>A ver si alguien me puede ayudar
>
>
>-----------------------------------------------------------------------
-
>
>_______________________________________________
>Python-es mailing list
>Python-es en aditel.org
>http://listas.aditel.org/listinfo/python-es
>
>
--
=========================================
NO A LAS PATENTES DE SOFTWARE
http://proinnova.hispalinux.es
=========================================
Ernesto Revilla
sicem sl
Pol. Ind. Juncaril, c/ Loja Parc. 7 Local 13
18220 Albolote
http://www.sicem.biz
Tel: 637 716189
MSN: aerd en mx3.redestb.es
ICQ: 163888521
---
avast! Antivirus: Saliente mensaje limpio.
Base de datos de Virus (VPS): 0520-0, 16/05/2005
Comprobado en: 16/05/2005 23:20:08
avast! tiene los derechos reservados (c) 2000-2004 ALWIL Software.
http://www.avast.com
Más información sobre la lista de distribución Python-es