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