Home > Gtk3, PyGObject, python > PyGObject: Gtk.HeaderBar

PyGObject: Gtk.HeaderBar

13 Aprile 2020

torna all’indice appunti

HeaderBar

Il Gtk.HeaderBar è simile ad un Gtk.Box orizzontale, permette infatti di posizionare children
all’inizio o alla fine. In aggiunta permette di avere un titolo da visualizzare, tale titolo sarà
centrato sulla larghezza del box.
Dal momento che GTK+ supporta le decorazioni lato Client, un oggetto Gtk.HeaderBar
può essere utilizzato al posto della title bar (che è renderizzata dal Window Manager).
Una Gtk.HeaderBar dà anche l’accesso ai controlli della window, come il CloseButton e i
window menu.

Le properties principali sono:

Name Type Flags Short Description
custom-title Gtk.Widget r/w Il title widget personalizzato da visualizzare
decoration-layout str r/w il layout per le decorazioni della window
decoration-layout-set bool r/w Se la property “decoration-layout” è stata settata
has-subtitle bool r/w/en Se riserva spazio per un sottotitolo
show-close-button bool r/w/en Se deve visualizzare le decorazioni della window (es. close button)
spacing int r/w/en La quantità di spazio tra i children
subtitle str r/w Il sottotitolo da visualizzare
title str r/w Il titolo da visualizzare

Metodi

Oltre ai soliti getter e setter relativi alle properties dell’oggetto Gtk.HeaderBar,
i principali metodi sono:

new()

Il metodo costruttore che crea un nuovo widget Gtk.HeaderBar

get_custom_title()

Ritorna il title widget personalizzato dell’header, o None se non ne è stato settato nessuno
esplicitamente.

get_decoration_layout()

Ritorna una stringa che rappresenta il decoration layout dell’header settato con il metodo
Gtk.HeaderBar.set_decoration_layout().

get_has_subtitle()

Ritorna True se l’headerbar riserva spazio per un sottotitolo

get_show_close_button()

Ritorna True se nell’headerbar sono visualizzate le window decorations,
ad esempio il window CloseButton.

get_subtitle()

Ritorna il sottotitolo della headerbar, o None se non è stato settato alcun
sottotitolo esplicitamente.

get_title()

Ritorna il titolo della headerbar, o None se non è stato settato alcun titolo
esplicitamente.

pack_end(child)

Aggiunge un child alla headerbar partendo dalla fine (come per il Gtk.Box).
I parametri sono:
child: il widget child (Gtk.Widget) da aggiungere alla headerbar;

pack_start(child)

Aggiunge un child alla headerbar partendo dall’inizio (come per il Gtk.Box).
I parametri sono:
child: il widget child (Gtk.Widget) da aggiungere alla headerbar;

set_custom_title(title_widget)

Aggiunge un titolo personalizzato alla headerbar. Questo sostituisce l’eventuale titolo settato
con il metodo Gtk.HeaderBar.set_title().
I parametri sono:
title_widget: il widget title (Gtk.Widget) da utilizzare come titolo;

set_decoration_layout(layout)

Setta il decoration layout per la headerbar, sovrascrivendo il Gtk.Setting “gtk-decoration-layout”
(ad esempio non vogliamo buttons sulla destra).
Il formato della stringa è dato dai nomi dei buttons, separati da comma (virgola)
e colon (due punti “:”) che separa ciò che deve essere visualizzato a sinistra,
da quello che deve essere visualizzato a destra.
Ad esempio “menu:minimize,maximize,close” significa che a sinistra avremo un menu, mentre a destra
i buttons minimize, maximize
e close.
I parametri sono:
layout: la stringa che rappresenta il decoration layout,
o None per togliere il layout;

set_has_subtitle(setting)

Serve per riservare o meno lo spazio nella headerbar, per un sottotitolo.
I parametri sono:
setting: True per riservare spazio al sottotitolo,
altrimenti False;

set_show_close_button(setting)

Setta se questa headerbar debba visualizzare, o meno, le standard window decorations,
che includono i buttons close, maximize e minimize.
I parametri sono:
setting: True per visualizzare le standard window
decorations, altrimenti False;

set_subtitle(subtitle)

Setta il sottotitolo della Gtk.HeaderBar. Notare che la HeaderBar, di default, riserva un’area per
il sottotitolo, anche se al metodo viene passato None.
Se non vogliamo un’area dedicata dobbiamo settare la property “has-subtitle” a
False.
I parametri sono:
subtitle: la stringa che indica il sottotitolo da visualizzare,
o None;

set_title(title)

Setta il titolo della Gtk.HeaderBar.
I parametri sono:
title: la stringa che indica il titolo da
visualizzare, o None;

Di seguito un codice di esempio:

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gio


class GWindow(Gtk.Window):

    def __init__(self):
        super().__init__(title="HeaderBar Example")
        self.set_border_width(10)
        self.set_default_size(500, 250)
        self.entry = Gtk.Entry(text="Type here...")
        self.add(self.entry)
        # build header bar
        header_bar = Gtk.HeaderBar()
        header_bar.set_show_close_button(True)
        header_bar.set_title("HeaderBar example")

        button_copy = Gtk.Button()
        icon_copy = Gio.ThemedIcon(name="edit-copy-symbolic")
        image_copy = Gtk.Image.new_from_gicon(icon_copy, Gtk.IconSize.BUTTON)
        button_copy.add(image_copy)
        header_bar.pack_end(button_copy)

        button_left = Gtk.Button()
        button_left.add(Gtk.Arrow(arrow_type=Gtk.ArrowType.LEFT,
                                  shadow_type=Gtk.ShadowType.NONE))
        button_right = Gtk.Button()
        button_right.add(Gtk.Arrow(arrow_type=Gtk.ArrowType.RIGHT,
                                   shadow_type=Gtk.ShadowType.NONE))
        # box composition
        box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
        box.add(button_left)
        box.add(button_right)

        header_bar.pack_start(box)
        self.set_titlebar(header_bar)
        # bindings
        button_copy.connect("clicked", self.on_copy)

    def on_copy(self, button):
        print("INFO: text '%s' copied!" % self.entry.get_text())


if __name__ == "__main__":
    win = GWindow()
    win.connect("destroy", Gtk.main_quit)
    win.show_all()
    Gtk.main()

link di riferimento:

torna all’indice degli appunti
Gtk3 HeaderBar

Categorie:Gtk3, PyGObject, python Tag: , ,
I commenti sono chiusi.