Foros del Web » Programando para Internet » Python »

Toolbar...

Estas en el tema de Toolbar... en el foro de Python en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 29/01/2010, 15:31
 
Fecha de Ingreso: abril-2008
Mensajes: 68
Antigüedad: 16 años
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
  #2 (permalink)  
Antiguo 30/01/2010, 10:47
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Toolbar...

Código Python:
Ver original
  1. import wx
  2.  
  3. class SimpleToolBar(wx.Frame):
  4.     def __init__(self, *args, **kwds):
  5.         wx.Frame.__init__(self, *args, **kwds)
  6.  
  7.         #Creamos el toolbar
  8.         toolbar = self.CreateToolBar()
  9.  
  10.         new_tool = toolbar.AddLabelTool(-1, 'Abrir', wx.Bitmap('new.bmp'))
  11.  
  12.         toolbar.AddSeparator()
  13.  
  14.         open_tool = toolbar.AddLabelTool(-1, 'Nuevo', wx.Bitmap('open.bmp'))
  15.  
  16.         self.Bind(wx.EVT_TOOL, self.OnClick, new_tool)
  17.         self.Bind(wx.EVT_TOOL, self.OnClick, open_tool)
  18.  
  19.         toolbar.Realize()
  20.  
  21.     def OnClick(self, event):
  22.         print "Test"
  23.        
  24.  
  25. if __name__ == '__main__':
  26.     app = wx.PySimpleApp()
  27.     frame = SimpleToolBar(None, title="Simple ToolBar Example")
  28.     frame.Show()
  29.     app.MainLoop()
Ejemplo de como funciona un toolbar, ojo yo tengo en la misma carpeta donde se ejecuta, los archivos open.bmp y new.bmp

Edito: Lo mismo pero con clases :P
Código Python:
Ver original
  1. import wx
  2.  
  3. class Frame(wx.Frame):
  4.     def __init__(self, *args, **kwds):
  5.         wx.Frame.__init__(self, *args, **kwds)
  6.  
  7.         #Creamos el toolbar
  8.         toolbar = ToolBar(self)
  9.  
  10. class ToolBar(wx.ToolBar):
  11.     def __init__(self, *args, **kwds):
  12.         wx.ToolBar.__init__(self, *args, **kwds)
  13.         new_tool = self.AddLabelTool(-1, 'Abrir', wx.Bitmap('new.bmp'))
  14.         self.AddSeparator()
  15.         open_tool = self.AddLabelTool(-1, 'Nuevo', wx.Bitmap('open.bmp'))
  16.         self.Bind(wx.EVT_TOOL, self.OnClick, new_tool)
  17.         self.Bind(wx.EVT_TOOL, self.OnClick, open_tool)
  18.         self.Realize()
  19.  
  20.     def OnClick(self, event):
  21.         print "Test"
  22.  
  23. if __name__ == '__main__':
  24.     app = wx.PySimpleApp()
  25.     frame = Frame(None, title="Simple ToolBar Example")
  26.     frame.Show()
  27.     app.MainLoop()

Última edición por razpeitia; 30/01/2010 a las 11:11
  #3 (permalink)  
Antiguo 01/02/2010, 14:45
 
Fecha de Ingreso: abril-2008
Mensajes: 68
Antigüedad: 16 años
Puntos: 0
Respuesta: Toolbar...

Gracias...

Etiquetas: toolbar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 16:09.