ComboBox

Chema Cortes py en ls-l.org
Mar Sep 27 09:37:55 CEST 2005


Martha Lucía Gallego López escribió:

>  El modulo que llamo lo hago de la siguiente manera dentro de una funcion
> llamo a el modulo caracteristicas así: caracteristicas.informacion()
> en la funcion informacion tengo definido el combobox, que fue el código que
> envié.
>  Lo que tu dices me hace caer en cuenta del error, eso que intituitivamente
> piensas es tal y como lo describes; pero me gustaria saber como puedo hacer
> para que esto no me suceda entonces????

En python un objeto existe mientras sea referenciado. Si todas las
referencias a un objeto desaparecen, el objeto queda en una especie de
limbo hasta que el recolector de basura (Garbage Collector) lo liquide
de memoria en breve.

Así pues, para que un objeto no desaparezca basta con que esté
referenciado en alguna parte. Todos los widgets de una ventana son
referenciados desde la ventana maestra (root), por lo que bastaría con
que una referencia a root estuviera en algún lugar seguro.

Lo más directo sería hacer de 'root' una variable global, pero iría en
contra de las reglas de la buena programación que insiste en no exponer
variables globales si se puede evitar.

En resumen, tienes dos opciones:

1) crea la ventana desde el bloque de código principal y pasas una
referencia a la función que crea los widgets.

2) crea la ventana en la función y retornas una referencia para que
"otros" la mantengan viva.




Más información sobre la lista de distribución Python-es