Problema con combobox

Chema Cortes py en ls-l.org
Lun Oct 10 10:04:47 CEST 2005


Martha Lucía Gallego López escribió:
> Hola, a todos los listeros he enviado varias veces este correo, pero
> no encuentro respuesta; la verdad en lo que puedan colaborarme es de
> gran ayuda para mi.
> 
> Lo que envío a continuación es el código de 2 módulos hechos en python
> 2.4 sobre Windows; el primer módulo como lo indica su nombre es un
> menú principal que se encarga de llamar al módulo características que
> tiene como alguna de sus funciones llamar a un combobox; el problema
> que sucede es que si corre pero no me muestra el combobox, y en cambio
> muestra una serie de errores que también envío para que me puedan
> corregir:

Ya no recuerdo cuantas veces he visto el mismo código, pero sigo sin ver
las recomendaciones que te he ido dando.

Lo primero es que sólo deberías utilizar un único 'root' para todo el
código. El resto de ventanas deben ser creadas con la función Toplevel().

Una vez que has decidido en qué sitio vas a crear root, sigue cualquiera
de las dos recomendaciones que te he puesto en otros mensajes ( a) crear
root en el módulo principal y enviarlo como argumento, b) crear root en
el módulo y retornarlo al módulo principal).



> #################modulo principal
> from Tkinter import *
> import caracteristicas
> 
> def car_lugar():
> caracteristicas.informacion()
> 
> def MenuVigilanciaVolcanica():
> MenuVigilancia.menu= Menu(MenuVigilancia)
> MenuVigilancia.menu.add_cascade(label= 'Caracteristicas del
> lugar',
> underline= 0,
> command= car_lugar)
> MenuVigilancia.menu.add('separator')
> MenuVigilancia.menu.add_cascade(label= 'Salir del Programa',
> underline= 0,
> command= root.destroy)
> MenuVigilancia['menu']= MenuVigilancia.menu
> return MenuVigilancia
> 
>  root= Tk()
> mBar= Frame(root,relief= RAISED, borderwidth= 2)
> mBar.pack(fill= X)
> MenuVigilancia= MenuVigilanciaVolcanica()
> mBar.tk_menuBar(MenuVigilancia)
> root.title('MENU PRINCIPAL')
> root.mainloop()
> 
> 
> #############modulo caracteristicas
> from Tkinter import *
> import Pmw
> def informacion():
> root = Tk()
> Pmw.initialise(root)
> grupo_pais= Pmw.Group(root,
> tag_text= 'Seleccione o digite opción')
> grupo_pais.pack(fill= 'both',expand= 1,padx= 10,pady= 4)
> 
> lpais= Label(grupo_pais.interior(),
> text= "PAIS")
> lpais.grid(row= 0, column= 0, padx= 4)
> 
> paises= ('Colombia','Costa Rica','Chile','Perú')
> ComboPais= Pmw.ComboBox(grupo_pais.interior(),
> scrolledlist_items= paises,
> entryfield_value= paises[0],
> dropdown=1)
> ComboPais.grid(row= 0, column= 1, padx= 4) ..........
> root.mainloop()
> 
> En resumidas cuentas el código anterior es el que manejo y estos son los
> errores que se presentan después de correr los modulos:
> 
> Exception in Tkinter callback
> Traceback (most recent call last):
> File "C:\PYTHON\lib\lib-tk\Tkinter.py", line 1352, in __call__
> return self.func(*args)
> File "C:\prueba\menuprincipal.py", line 39, in car_lugar
> caracteristicas.informacion()
> File "C:\prueba\caracteristicas.py", line 61, in informacion
> dropdown=1)
> File "C:\python\Pmw\Pmw_1_2\lib\PmwComboBox.py", line 37, in __init__
> Pmw.EntryField, (interior,))
> File "C:\python\Pmw\Pmw_1_2\lib\PmwBase.py", line 524, in createcomponent
> widget = apply(widgetClass, widgetArgs, kw)
> File "C:\python\Pmw\Pmw_1_2\lib\PmwEntryField.py", line 73, in __init__
> sequences = root.bind_class(tag)
> File "C:\PYTHON\lib\lib-tk\Tkinter.py", line 965, in bind_class
> return self._bind(('bind', className), sequence, func, add, 0)
> File "C:\PYTHON\lib\lib-tk\Tkinter.py", line 900, in _bind
> return self.tk.splitlist(self.tk.call(what))
> TclError: bad window path name
> ".19751360.19751600.19751640.19836480.19849424.19849584"
> AttributeError Exception in Tk callback
> Function: <bound method ComboBox.destroy of
> <_Pmw.Pmw_1_2.lib.PmwComboBox.ComboBox instance at 0x012EAC60>> (type: <type
> 'instancemethod'>)
> Args: ()
> Traceback (innermost last):
> File "C:\python\Pmw\Pmw_1_2\lib\PmwBase.py", line 1704, in
> __TkinterWidgetDestroy
> mega.destroy()
> File "C:\python\Pmw\Pmw_1_2\lib\PmwComboBox.py", line 149, in destroy
> if self['dropdown'] and self._isPosted:
> AttributeError: ComboBox instance has no attribute '_isPosted'
> 
> Gracias por su atención.
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
> 
> 
> 




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