Toolbar (Python) Marta Maria Casetti mmcasetti@gmail.com 2012 Lišta s tlačítky a dalšími widgety Toolbar

Příklad lišty s tlačítky (se standardními ikonami).

Kód použitý k vygenerování tohoto příkladu from gi.repository import Gtk from gi.repository import Gdk from gi.repository import Gio import sys class MyWindow(Gtk.ApplicationWindow): def __init__(self, app): Gtk.Window.__init__(self, title="Toolbar Example", application=app) self.set_default_size(400, 200) # Mřížka pro připojení nástrojové lišty grid = Gtk.Grid() # Nástrojová lišta vytvořená v metodě create_toolbar (viz dále) toolbar = self.create_toolbar() # S dodatečným vodorovným místem toolbar.set_hexpand(True) # Zobrazí nástrojovou lištu toolbar.show() # Připojí nástrojovou lištu do mřížky grid.attach(toolbar, 0, 0, 1, 1) # Přidá mřížku do okna self.add(grid) # Vytvoří akce, které ovládají okno a napojí jejich signály na # metody zpětného volání (viz dále): # Akce "undo" undo_action = Gio.SimpleAction.new("undo", None) undo_action.connect("activate", self.undo_callback) self.add_action(undo_action) # Akce "fullscreen" fullscreen_action = Gio.SimpleAction.new("fullscreen", None) fullscreen_action.connect("activate", self.fullscreen_callback) self.add_action(fullscreen_action) # Metoda, která vytvoří nástrojovou lištu def create_toolbar(self): # Nástrojová lišta toolbar = Gtk.Toolbar() # Jedná se o hlavní nástrojovou lištu aplikace toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR) # Vytvoří tlačítko pro akci "new", se standardní ikonou new_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW) # Popisek se zobrazuje new_button.set_is_important(True) # Vloží tlačítko na pozici na nástrojové liště toolbar.insert(new_button, 0) # Zobrazí tlačítko new_button.show() # Nastaví název akce přidružené k tlačítku # Tato akce řídí aplikaci (app) new_button.set_action_name("app.new") # Tlačítko pro akci "open" open_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN) open_button.set_is_important(True) toolbar.insert(open_button, 1) open_button.show() open_button.set_action_name("app.open") # Tlačítko pro akci "undo" undo_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO) undo_button.set_is_important(True) toolbar.insert(undo_button, 2) undo_button.show() undo_button.set_action_name("win.undo") # Tlačítko pro akci "fullscreen/leave fullscreen" self.fullscreen_button = Gtk.ToolButton.new_from_stock( Gtk.STOCK_FULLSCREEN) self.fullscreen_button.set_is_important(True) toolbar.insert(self.fullscreen_button, 3) self.fullscreen_button.set_action_name("win.fullscreen") # Vrátí kompletní nástrojovou lištu return toolbar # Metoda zpětného volání pro "undo" def undo_callback(self, action, parameter): print("You clicked \"Undo\".") # Metoda zpětného volání pro "fullscreen/leave fullscreen" def fullscreen_callback(self, action, parameter): # Zkontroluje, jestli je stav stejný jako Gdk.WindowState.FULLSCREEN, # což je bitový příznak is_fullscreen = self.get_window().get_state( ) & Gdk.WindowState.FULLSCREEN != 0 if not is_fullscreen: self.fullscreen_button.set_stock_id(Gtk.STOCK_LEAVE_FULLSCREEN) self.fullscreen() else: self.fullscreen_button.set_stock_id(Gtk.STOCK_FULLSCREEN) self.unfullscreen() class MyApplication(Gtk.Application): def __init__(self): Gtk.Application.__init__(self) def do_activate(self): win = MyWindow(self) win.show_all() def do_startup(self): Gtk.Application.do_startup(self) # Vytvoří akce pro ovládání aplikace a napojí jejich signály na # metody zpětného volání (viz dále): # Akce "new" new_action = Gio.SimpleAction.new("new", None) new_action.connect("activate", self.new_callback) app.add_action(new_action) # Akce "open" open_action = Gio.SimpleAction.new("open", None) open_action.connect("activate", self.open_callback) app.add_action(open_action) # Metoda zpětného volání pro "new" def new_callback(self, action, parameter): print("You clicked \"New\".") # Metoda zpětného volání pro "open" def open_callback(self, action, parameter): print("You clicked \"Open\".") app = MyApplication() exit_status = app.run(sys.argv) sys.exit(exit_status)
Užitečné metody pro widget Toolbar

Na řádku 32 je signál "activate" od činnosti undo_action napojen na funkci zpětného volání undo_callback() pomocí action.connect(signál, funkce zpětného volání). Podrobnější vysvětlení viz .

Použijte insert(nástrojová_položka, pozice) k vložení nástrojové_položky na pozici. Pokud je pozice záporná, bude položka vložena na konec nástrojové lišty.

get_item_index(tool_item) vrací pozici tool_item na nástrojové liště.

get_n_items() vrací počet položek na nástrojové liště. get_nth_item(pozice) vrací položku na pozici pozice.

Pokud nástrojová lišta nemá dostatek místa pro všechny položky a je použito set_show_arrow(True), položky které jdou mimo se zobrazí v nabídce přetékajících položek.

set_icon_size(velikost_ikony) nastavuje velikost ikony na nástrojové liště. Parametr velikost_ikony může být něco z Gtk.IconSize.INVALID, Gtk.IconSize.MENU, Gtk.IconSize.SMALL_TOOLBAR, Gtk.IconSize.LARGE_TOOLBAR, Gtk.IconSize.BUTTON, Gtk.IconSize.DND nebo Gtk.IconSize.DIALOG. Používat by se to mělo jen pro speciální účely, normálně by nástrojová lišta aplikace měla respektovat uživatelské předvolby pro velikost ikon. unset_icon_size() zruší volbu nastavenou pomocí set_icon_size(velikost_ikony), takže se k určení velikosti ikon použije uživatelská předvolba.

set_style(styl), kde styl je jedno z Gtk.ToolbarStyle.ICONS, Gtk.ToolbarStyle.TEXT, Gtk.ToolbarStyle.BOTH nebo Gtk.ToolbarStyle.BOTH_HORIZ, nastavuje, jestli nástrojová lišta zobrazuje jen ikony, jen text nebo obojí (svisle na sobě nebo vedle sebe). Abyste umožňili uživateli předvolby určující styl nástrojové lišty a zrušit již nastavený styl, použijte unset_style().

Odkazy k API

V této ukázce se používá následující:

GtkToolbar

GtkToolButton

GtkToolItem

Standardní položky

GtkActionable

GtkWidget

Struktury událostí