Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: coquic en 26 de Julio 2014, 16:44

Título: Mostrar descripcion sobre un boton. wxPython wx.Button SetToolTip
Publicado por: coquic en 26 de Julio 2014, 16:44
Hola gente, acudo nuevamente a uds por ayuda.

Lo que quiero hacer es sencillo o eso creo pero no se como, ahora les cuento.

Tengo botones en una aplicacion grafica que tengo funcionando hecha con wxPython, lo que quiero agregar es que cuando quede el mouse sobre un boton, aparezca la descripcion de lo que es, se entiende??

Por ejemplo, si tengo un boton que es para reproducir audio, cuando deje el mouse sobre este boton un momento, aparezca el cartelito que dice "Play" o "Reproducir", lo que sea.
Como pasa sobre las imagenes o botones en una web.

cualquier ayuda se agradece.

Saludos!!
Título: Re:Mostrar descripcion sobre un boton. wxPython
Publicado por: Ogramar en 26 de Julio 2014, 23:17
Hola, hay una clase denominada ToolTip que te permite incorporar ese tipo de información. Puedes usar:

SetToolTip(self, tip)

SetToolTipString(self, tip)


Ejemplo de uso:

self.button_1.SetToolTipString ('Este es el botón 1')
self.button_2.SetToolTipString('Este es el botón 2')

Saludos.
Título: Re:Mostrar descripcion sobre un boton. wxPython
Publicado por: coquic en 27 de Julio 2014, 04:24
Hola, gracias por responder.

Me sale este error:

AttributeError: 'ToolBarToolBase' object has no attribute 'SetToolTipString'

Sabes que podrá ser??

Gracias.
Título: Re:Mostrar descripcion sobre un boton. wxPython
Publicado por: Ogramar en 27 de Julio 2014, 11:18
Es posible que no tengas definidos los botones como wx.Button

Mira este ejemplo cómo definen los botones:

Código: [Seleccionar]
=== example code

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
# generated by wxGlade 0.5

import wx

class MyFrame( wx.Frame):
    def __init__(self, *args, **kwds):
        # begin wxGlade: MyFrame.__init__
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.panel_1 = wx.Panel(self, -1)
       
        self.button_1 = wx.Button(self.panel_1, 1001, "Aqui boton 1")
        self.button_2 = wx.Button( self.panel_1, -1, "Aqui boton 2")

        self.button_1.SetToolTipString ('This is button 1')
        self.button_2.SetToolTipString('This is button 2')

        self.panel_1.Bind(wx.EVT_BUTTON, self.OnButton, self.button_1)
        self.button_2_state = 1

        self.__set_properties()
        self.__do_layout()
        # end wxGlade       
 
    def __set_properties(self):
        # begin wxGlade: MyFrame.__set_properties
        self.SetTitle("frame_1")
        # end wxGlade

    def __do_layout(self):
        # begin wxGlade: MyFrame.__do_layout
        sizer_1 = wx.BoxSizer(wx.VERTICAL)
        sizer_2 = wx.BoxSizer (wx.VERTICAL)
        sizer_2.Add(self.button_1, 0, wx.ALL, 20)
        sizer_2.Add(self.button_2, 0, wx.ALL, 20)
        self.panel_1.SetSizer (sizer_2)
        sizer_1.Add(self.panel_1, 1, wx.EXPAND, 0)
        self.SetSizer(sizer_1)
        sizer_1.Fit(self)
        self.Layout()
        # end wxGlade

# end of class MyFrame


class MyApp(wx.App):
    def OnInit(self):
        wx.InitAllImageHandlers()
        frame_1 = MyFrame(None, -1, "")
        self.SetTopWindow(frame_1)
        frame_1.Show()
        return 1

# end of class MyApp

if __name__ == "__main__":
    app = MyApp(0)
    app.MainLoop()