Blame platform-demos/es/tooltip.py.page

Packit 1470ea
Packit 1470ea
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" xmlns:xi="http://www.w3.org/2001/XInclude" type="guide" style="task" id="tooltip.py" xml:lang="es">
Packit 1470ea
  <info>
Packit 1470ea
  <title type="text">Consejo (Python)</title>
Packit 1470ea
    <link type="guide" xref="beginner.py#misc"/>
Packit 1470ea
    <link type="seealso" xref="toolbar.py"/>
Packit 1470ea
    <link type="next" xref="toolbar_builder.py"/>
Packit 1470ea
    <revision version="0.1" date="2012-08-20" status="draft"/>
Packit 1470ea
Packit 1470ea
    <credit type="author copyright">
Packit 1470ea
      <name>Marta Maria Casetti</name>
Packit 1470ea
      <email its:translate="no">mmcasetti@gmail.com</email>
Packit 1470ea
      <years>2012</years>
Packit 1470ea
    </credit>
Packit 1470ea
Packit 1470ea
    <desc>Añadir consejos a sus widgets</desc>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Daniel Mustieles</mal:name>
Packit 1470ea
      <mal:email>daniel.mustieles@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2011 - 2017</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Nicolás Satragno</mal:name>
Packit 1470ea
      <mal:email>nsatragno@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2012 - 2013</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Jorge González</mal:name>
Packit 1470ea
      <mal:email>jorgegonz@svn.gnome.org</mal:email>
Packit 1470ea
      <mal:years>2011</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  </info>
Packit 1470ea
Packit 1470ea
  <title>Consejo</title>
Packit 1470ea
  <media type="image" mime="image/png" src="media/tooltip.png"/>
Packit 1470ea
  

Una barra de herramientas con un consejo (con una imagen) para un botón.

Packit 1470ea
  <note>

Esto construye el ejemplo de <link xref="toolbar.py">Toolbar</link>.

</note>
Packit 1470ea
Packit 1470ea
  <links type="section"/>
Packit 1470ea
    
Packit 1470ea
  <section id="code">
Packit 1470ea
  <title>Código usado para generar este ejemplo</title>
Packit 1470ea
    from gi.repository import Gtk
Packit 1470ea
from gi.repository import Gdk
Packit 1470ea
from gi.repository import Gio
Packit 1470ea
import sys
Packit 1470ea
Packit 1470ea
Packit 1470ea
class MyWindow(Gtk.ApplicationWindow):
Packit 1470ea
Packit 1470ea
    def __init__(self, app):
Packit 1470ea
        Gtk.Window.__init__(
Packit 1470ea
            self, title="Toolbar with Tooltips Example", application=app)
Packit 1470ea
        self.set_default_size(400, 200)
Packit 1470ea
Packit 1470ea
        grid = Gtk.Grid()
Packit 1470ea
Packit 1470ea
        toolbar = self.create_toolbar()
Packit 1470ea
        toolbar.set_hexpand(True)
Packit 1470ea
        toolbar.show()
Packit 1470ea
Packit 1470ea
        grid.attach(toolbar, 0, 0, 1, 1)
Packit 1470ea
Packit 1470ea
        self.add(grid)
Packit 1470ea
Packit 1470ea
        undo_action = Gio.SimpleAction.new("undo", None)
Packit 1470ea
        undo_action.connect("activate", self.undo_callback)
Packit 1470ea
        self.add_action(undo_action)
Packit 1470ea
Packit 1470ea
        fullscreen_action = Gio.SimpleAction.new("fullscreen", None)
Packit 1470ea
        fullscreen_action.connect("activate", self.fullscreen_callback)
Packit 1470ea
        self.add_action(fullscreen_action)
Packit 1470ea
Packit 1470ea
    def create_toolbar(self):
Packit 1470ea
        toolbar = Gtk.Toolbar()
Packit 1470ea
        toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR)
Packit 1470ea
Packit 1470ea
        # button for the "new" action
Packit 1470ea
        new_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW)
Packit 1470ea
        # with a tooltip with a given text
Packit 1470ea
        new_button.set_tooltip_text("Create a new file")
Packit 1470ea
        new_button.set_is_important(True)
Packit 1470ea
        toolbar.insert(new_button, 0)
Packit 1470ea
        new_button.show()
Packit 1470ea
        new_button.set_action_name("app.new")
Packit 1470ea
Packit 1470ea
        # button for the "open" action
Packit 1470ea
        open_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN)
Packit 1470ea
        # with a tooltip with a given text in the Pango markup language
Packit 1470ea
        open_button.set_tooltip_markup("Open an <i>existing</i> file")
Packit 1470ea
        open_button.set_is_important(True)
Packit 1470ea
        toolbar.insert(open_button, 1)
Packit 1470ea
        open_button.show()
Packit 1470ea
        open_button.set_action_name("app.open")
Packit 1470ea
Packit 1470ea
        # button for the "undo" action
Packit 1470ea
        undo_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO)
Packit 1470ea
        # with a tooltip with an image
Packit 1470ea
        # set True the property "has-tooltip"
Packit 1470ea
        undo_button.set_property("has-tooltip", True)
Packit 1470ea
        # connect to the callback function that for the tooltip
Packit 1470ea
        # with the signal "query-tooltip"
Packit 1470ea
        undo_button.connect("query-tooltip", self.undo_tooltip_callback)
Packit 1470ea
        undo_button.set_is_important(True)
Packit 1470ea
        toolbar.insert(undo_button, 2)
Packit 1470ea
        undo_button.show()
Packit 1470ea
        undo_button.set_action_name("win.undo")
Packit 1470ea
Packit 1470ea
        # button for the "fullscreen/leave fullscreen" action
Packit 1470ea
        self.fullscreen_button = Gtk.ToolButton.new_from_stock(
Packit 1470ea
            Gtk.STOCK_FULLSCREEN)
Packit 1470ea
        self.fullscreen_button.set_is_important(True)
Packit 1470ea
        toolbar.insert(self.fullscreen_button, 3)
Packit 1470ea
        self.fullscreen_button.set_action_name("win.fullscreen")
Packit 1470ea
Packit 1470ea
        return toolbar
Packit 1470ea
Packit 1470ea
    # the callback function for the tooltip of the "undo" button
Packit 1470ea
    def undo_tooltip_callback(self, widget, x, y, keyboard_mode, tooltip):
Packit 1470ea
        # set the text for the tooltip
Packit 1470ea
        tooltip.set_text("Undo your last action")
Packit 1470ea
        # set an icon fot the tooltip
Packit 1470ea
        tooltip.set_icon_from_stock("gtk-undo", Gtk.IconSize.MENU)
Packit 1470ea
        # show the tooltip
Packit 1470ea
        return True
Packit 1470ea
Packit 1470ea
    def undo_callback(self, action, parameter):
Packit 1470ea
        print("You clicked \"Undo\".")
Packit 1470ea
Packit 1470ea
    def fullscreen_callback(self, action, parameter):
Packit 1470ea
        is_fullscreen = self.get_window().get_state(
Packit 1470ea
        ) & Gdk.WindowState.FULLSCREEN != 0
Packit 1470ea
        if not is_fullscreen:
Packit 1470ea
            self.fullscreen_button.set_stock_id(Gtk.STOCK_LEAVE_FULLSCREEN)
Packit 1470ea
            self.fullscreen()
Packit 1470ea
        else:
Packit 1470ea
            self.fullscreen_button.set_stock_id(Gtk.STOCK_FULLSCREEN)
Packit 1470ea
            self.unfullscreen()
Packit 1470ea
Packit 1470ea
Packit 1470ea
class MyApplication(Gtk.Application):
Packit 1470ea
Packit 1470ea
    def __init__(self):
Packit 1470ea
        Gtk.Application.__init__(self)
Packit 1470ea
Packit 1470ea
    def do_activate(self):
Packit 1470ea
        win = MyWindow(self)
Packit 1470ea
        win.show_all()
Packit 1470ea
Packit 1470ea
    def do_startup(self):
Packit 1470ea
        Gtk.Application.do_startup(self)
Packit 1470ea
Packit 1470ea
        new_action = Gio.SimpleAction.new("new", None)
Packit 1470ea
        new_action.connect("activate", self.new_callback)
Packit 1470ea
        app.add_action(new_action)
Packit 1470ea
Packit 1470ea
        open_action = Gio.SimpleAction.new("open", None)
Packit 1470ea
        open_action.connect("activate", self.open_callback)
Packit 1470ea
        app.add_action(open_action)
Packit 1470ea
Packit 1470ea
    def new_callback(self, action, parameter):
Packit 1470ea
        print("You clicked \"New\".")
Packit 1470ea
Packit 1470ea
    def open_callback(self, action, parameter):
Packit 1470ea
        print("You clicked \"Open\".")
Packit 1470ea
Packit 1470ea
app = MyApplication()
Packit 1470ea
exit_status = app.run(sys.argv)
Packit 1470ea
sys.exit(exit_status)
Packit 1470ea
Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="methods">
Packit 1470ea
  <title>Métodos útiles para un widget de consejo</title>
Packit 1470ea
Packit 1470ea
    

set_tooltip_text(text) y set_tooltip_markup(text) pueden usarse para añadir un consejo o texto plano (o texto en el lenguaje de marcado de Pango) a un widget.

Packit 1470ea
    

Para consejos más complejos, por ejemplo para un consejo con una imagen:

Packit 1470ea
    <steps>
Packit 1470ea
      <item>

Establezca la propiedad "has-tooltip" del widget a True; esto hará que GTK+ monitorice el widget en busca de movimiento y eventos relacionados que se necesitan para determinar cuándo y dónde mostrar un consejo.

</item>
Packit 1470ea
      <item>

Conecte a la señal "query-tooltip". Esta señal se emitirá cuando se deba mostrar un widget. Uno de los argumentos que se le pasan al manejador de señales es un objeto GtkTooltip. Este es el objeto que se va a mostrar como un consejo, y puede manipularse en su retorno de llamada usando funciones como set_icon(). Hay funciones para establecer el texto marcado del consejo (set_markup(text)), una imagen desde un icono del almacén (set_icon_from_stock(stock_id, size)), o incluso poner un widget personalizado (set_custom(widget)).

</item>
Packit 1470ea
      <item>

Devuelva True de su manejador de «query-tooltip». Esto hace que el consejo se muestre. Si devuelve False, no se mostrará.

</item>
Packit 1470ea
    </steps>
Packit 1470ea
Packit 1470ea
    

En el probablemente raro caso en el que quiera tener aún más control sobre el consejo que se va a mostrar, puede establecer su propia GtkWindow que se usará como ventana del consejo. Esto funciona así:

Packit 1470ea
    <steps>
Packit 1470ea
      <item>

Establezca "has-tooltip" y conecte con "query-tooltip" como antes.

</item>
Packit 1470ea
      <item>

Use set_tooltip_window() en el widget para establecer una GtkWindow creada como ventana del consejo.

</item>
Packit 1470ea
      <item>

En la devolución de llamada "query-tooltip" puede acceder a su ventana usando get_tooltip_window() y manipularla como quiera. La semántica del valor de retorno es exactamente la misma que antes, devuelva True para mostrar el widget o False para no hacerlo.

</item>
Packit 1470ea
    </steps>
Packit 1470ea
Packit 1470ea
  </section>
Packit 1470ea
  
Packit 1470ea
  <section id="references">
Packit 1470ea
  <title>Referencias de la API</title>
Packit 1470ea
    

En este ejemplo se usa lo siguiente:

Packit 1470ea
    <list>
Packit 1470ea
      <item>

<link href="http://developer.gnome.org/gtk3/stable/GtkTooltip.html">GtkTooltip</link>

</item>
Packit 1470ea
      <item>

<link href="http://developer.gnome.org/gtk3/stable/GtkToolbar.html">GtkToolbar</link>

</item>
Packit 1470ea
      <item>

<link href="http://developer.gnome.org/gtk3/stable/GtkWidget.html">GtkWidget</link>

</item>
Packit 1470ea
      <item>

<link href="http://developer.gnome.org/gtk3/stable/gtk3-Stock-Items.html">Elementos del almacén</link>

</item>
Packit 1470ea
    </list>
Packit 1470ea
  </section>
Packit 1470ea
</page>