Tema: Toolbar...
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/01/2010, 15:31
Nano-rosario
 
Fecha de Ingreso: abril-2008
Mensajes: 68
Antigüedad: 16 años, 1 mes
Puntos: 0
Toolbar...

Bueno la verdad queria resolver algo por mi cuenta pero hace 3 dias que me estoy dando la cabeza contra la pared...

Crea una clase MyToolBar para reutilizarla en varios frames...

Código:
class MyToolBar(wx.ToolBar):
    def __init__(self, parent):
        wx.ToolBar.__init__(self, parent,-1,  style=wx.TB_HORIZONTAL|wx.TB_3DBUTTONS|wx.TB_TEXT|wx.TB_HORZ_LAYOUT|wx.TB_HORZ_TEXT)
        self.AddLabelTool(1, "Agregar", wx.NullBitmap,wx.NullBitmap, wx.ITEM_NORMAL, "", "")
        self.AddLabelTool(2, "Modificar", wx.NullBitmap, wx.NullBitmap, wx.ITEM_NORMAL, "", "")
        self.AddLabelTool(3, "Guardar", wx.NullBitmap, wx.NullBitmap, wx.ITEM_NORMAL, "", "")
        self.AddLabelTool(4, "Cancelar", wx.NullBitmap, wx.NullBitmap, wx.ITEM_NORMAL, "", "")
        self.AddLabelTool(5, "Eliminar", wx.NullBitmap, wx.NullBitmap, wx.ITEM_NORMAL, "", "")
        self.AddSeparator()
        self.AddLabelTool(6, "Listar", wx.NullBitmap, wx.NullBitmap, wx.ITEM_NORMAL, "", "")
        self.AddLabelTool(7, "Elegir", wx.NullBitmap, wx.NullBitmap, wx.ITEM_NORMAL, "", "")
        self.SetToolBitmapSize((24, 24))
        self.Realize()
A la hora de usarla en un frame me da este error
Código:
Traceback (most recent call last):
  File "C:\Documents and Settings\podio\workspace\SMERP\src\form\frm_main.py", line 92, in Toolbar1_click
    f = form.frm_Articulos.frm_Articulos()
  File "C:\Documents and Settings\podio\workspace\SMERP\src\form\frm_Articulos.py", line 17, in __init__
    self.toolbar = md.mdControles.MyToolBar(self)
  File "C:\Documents and Settings\podio\workspace\SMERP\src\md\mdControles.py", line 23, in __init__
    self.Realize()
  File "C:\Python26\lib\site-packages\wx-2.8-msw-ansi\wx\_controls.py", line 3875, in Realize
    return _controls_.ToolBarBase_Realize(*args, **kwargs)
wx._core.PyAssertionError: C++ assertion "wxAssertFailure" failed at ..\..\src\msw\tbar95.cpp(726) in wxToolBar::Realize(): invalid tool button bitmap
El codigo del frame...
Código:
import wx
import md.mdDB
import md.mdControles
      
class frm_Articulos(wx.Frame):
    def __init__(self, *args, **kwds):
        # begin wxGlade: frm_Articulos.__init__
        kwds["style"] =wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, None,-1)
        self.panel_2 = wx.Panel(self, -1)
        self.notebook_1 = wx.Notebook(self, -1, style=0)
        self.list_ctrl_1 = wx.ListCtrl(self, -1, style=wx.LC_REPORT|wx.SUNKEN_BORDER)
        self.panel_1 = wx.Panel(self, -1, style=wx.DOUBLE_BORDER|wx.TAB_TRAVERSAL)
        self.notebook_1_pane_1 = wx.Panel(self.notebook_1, -1)
        self.bitmap_1 = wx.StaticBitmap(self.panel_2, -1, wx.Bitmap("C:\\Documents and Settings\\podio\\Escritorio\\PODIO\\podio.bmp", wx.BITMAP_TYPE_ANY))
        
        self.toolbar = md.mdControles.MyToolBar(self)
        self.__set_properties()
        self.__do_layout()
        self.CargaRS()
              
        self.Show()
        # end wxGlade

    def __set_properties(self):
        # begin wxGlade: frm_Articulos.__set_properties
        self.SetTitle("ABM Articulos")
        self.list_ctrl_1.InsertColumn(1,"Cod")
        self.list_ctrl_1.InsertColumn(2,"Categoria")
        self.list_ctrl_1.InsertColumn(3,"Sub-Cat")
        self.list_ctrl_1.InsertColumn(4,"Descripcion")
        # end wxGlade

    def __do_layout(self):
        # begin wxGlade: frm_Articulos.__do_layout
        sizer_1 = wx.BoxSizer(wx.VERTICAL)
        sizer_2 = wx.BoxSizer(wx.VERTICAL)
        sizer_3 = wx.BoxSizer(wx.HORIZONTAL)
        sizer_5 = wx.BoxSizer(wx.HORIZONTAL)
        sizer_4 = wx.BoxSizer(wx.HORIZONTAL)
        
        sizer_4.Add(self.list_ctrl_1, 4, wx.EXPAND, 0)
        sizer_2.Add(sizer_4, 2, wx.EXPAND, 0)
        sizer_2.Add(self.toolbar, 1, wx.EXPAND, 0)
        
        self.notebook_1.AddPage(self.notebook_1_pane_1, "General")
        self.notebook_1.AddPage(self.notebook_1_pane_1, "Descripcion HTML")
        sizer_3.Add(self.notebook_1, 4, wx.EXPAND, 0)
        sizer_5.Add(self.bitmap_1, 0, 0, 0)
        self.panel_2.SetSizer(sizer_5)
      
        sizer_3.Add(self.panel_2, 1, wx.EXPAND, 0)
        sizer_2.Add(sizer_3, 2, wx.EXPAND, 0)
        sizer_1.Add(sizer_2, 2, wx.EXPAND, 0)
        self.SetSizer(sizer_1)
        sizer_1.Fit(self)
        self.Layout()
        self.Centre()
        # end wxGlade
    def CargaRS(self):
        sql = "Select * from Articulos"
        cn = md.mdDB.GestorBD()
        rs = cn.execute(sql)
        for registro in rs:
            i = 0
            self.list_ctrl_1.InsertStringItem(i,registro[0])
            self.list_ctrl_1.SetStringItem(i,3,registro[2])
            i = i + 1

No entiendo porque da ese error bitmap no admitido, si no tiene ninguno...

saludos