Error con grid en wxpython

Ariel Nardelli pan_python en yahoo.com.ar
Mar Jul 31 19:44:03 CEST 2007


Hola!

Estoy teniendo un problema con un grid, en un programa de python.

Les pongo aca las partes relevantes del programa...


#!/usr/bin/env python
# -*- coding: ISO-8859-1 -*-

#
# Emision de Facturas
#
import wx
import wx.grid
from sql import *
from fechas import *
from forpag import *  # Tabla Forma de pago
import letras

class p2111(wx.MDIChildFrame):
    def __init__(self, pmios, *args, **kwds):
        self.pmios = pmios[:]

...

        # Grid items de Facturas.
        self.static_line_2 = wx.StaticLine(self, -1)
        self.static_line_7 = wx.StaticLine(self, -1, style=wx.LI_VERTICAL)
        self.grid = wx.grid.Grid(self, -1, size=(1, 1))
        self.static_line_8 = wx.StaticLine(self, -1, style=wx.LI_VERTICAL)

        self.__set_properties()
        self.__do_layout()

        # Eventos del Grid de "Items de Facturas"
        self.Bind(wx.grid.EVT_GRID_CMD_CELL_CHANGE, self.gridmodlinea, 
self.grid)

    def __set_properties(self):
        self.SetTitle("Emision Facturas")
        _icon = wx.EmptyIcon()
        _icon.CopyFromBitmap(wx.Bitmap("iconos/ft.ico", wx.BITMAP_TYPE_ANY))
        self.SetIcon(_icon)

...

        # Grid Items de Facturas.
        self.grid.CreateGrid(16, 2)
        self.grid.EnableEditing(1)
        self.grid.SetRowLabelSize(0)
        self.grid.SetColLabelSize(20)
        self.grid.EnableDragColSize(0)
        self.grid.EnableDragRowSize(0)
        self.grid.SetGridLineColour(wx.Colour(192, 192, 192))
        self.grid.SetSelectionMode(wx.grid.Grid.wxGridSelectRows)
        self.grid.SetFont(wx.Font(self.let[6][2], wx.TELETYPE, 
wx.NORMAL, self.let[6][3], 0, self.let[6][1]))
        self.grid.SetColLabelValue(0, "Descripcion")
        self.grid.SetColLabelValue(1, "Importe")
        self.grid.SetColSize(0, 455)
        self.grid.SetColSize(1, 95)
        self.grid.SetDefaultRowSize(self.let[5][4])
        self.grid.SetDefaultCellFont(wx.Font(self.let[6][2], 
wx.TELETYPE, wx.NORMAL, self.let[6][3], 0, self.let[6][1]))


    def __do_layout(self):
...
        grid_sizer_5.Add(self.grid, 1, 
wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
...
        self.SetAutoLayout(True)
        self.SetSizer(grid_sizer_1)
        grid_sizer_1.Fit(self)
        grid_sizer_1.SetSizeHints(self)
        self.Layout()

    
#############################################################################
    # Eventos de Grid
    def gridmodlinea(self, event): # Modifica alguna linea del grid.
        for k in range(0,16):
            # Verifico que ninguno de los elementos del grid tenga un 
largo mayor a 4.
            if  len(self.grid.GetCellValue(k,0)) > 4 : # (Descripcion) 
Mayor al largo permitido.
                mensa = "El renglon " + str(k+1) + " tiene un largo 
mayor al permitido. Por favor achique esa linea.\nGracias"
                self.cartelitos("Atencion",mensa)
                wx.SetCursor(wx.STANDARD_CURSOR)
                self.pasafoco('grid')
                return
        event.Skip()

Ok hasta aca el programa o mejor dicho partes del programa :)

El problema se me presenta cuando me posiciono en el evento de grid y 
empiezo a escribir algo, automaticamente al hacerlo me aparece esto en 
la linea de comandos donde estoy ejecutando el programa...

(python:3956): Gtk-CRITICAL **: gtk_container_remove: assertion 
`GTK_IS_TOOLBAR (container) || widget->parent == GTK_WIDGET (container)' 
failed

(python:3956): Gtk-CRITICAL **: gtk_container_remove: assertion 
`GTK_IS_TOOLBAR (container) || widget->parent == GTK_WIDGET (container)' 
failed


La pregunta es.. esto es normal???, que estoy haciendo mal o que me 
falta?????

Gracias!!!!
Ariel




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