PyGTK - Classe della barra degli strumenti

La classe della barra degli strumenti viene ereditata dalla classe gtk.Container. Contiene e gestisce una serie di pulsanti e altri widget. Una o più strisce orizzontali di pulsanti sono normalmente visualizzate appena sotto la barra dei menu in una finestra di primo livello. La barra degli strumenti può anche essere inserita in una finestra rimovibile chiamata HandleBox. Per impostazione predefinita, i pulsanti nel widget gtk.Toolbar sono disposti orizzontalmente. La barra degli strumenti verticale può essere configurata impostando la proprietà di orientamento sugtk.ORIENTATION_VERTICAL.

La barra degli strumenti può essere configurata per mostrare pulsanti con icone, testo o entrambi. Gli enumeratori di stile sono:

gtk.TOOLBAR_ICONS Questi pulsanti visualizzano solo le icone nella barra degli strumenti.
gtk.TOOLBAR_TEXT Questi pulsanti visualizzano solo etichette di testo nella barra degli strumenti.
gtk.TOOLBAR_BOTH Questi pulsanti visualizzano testo e icone nella barra degli strumenti.
gtk.TOOLBAR_BOTH_HORIZ Questi pulsanti visualizzano le icone e il testo uno accanto all'altro, anziché impilati verticalmente.

Un widget della barra degli strumenti viene impostato utilizzando il seguente costruttore:

bar = gtk.Toolbar()

I componenti di Toolbar sono istanze di gtk.ToolItem. Gli elementi possono essere ToolButton, RadioToolButton, ToggleToolButton o SeparatorToolItem. Per assegnare un'icona all'oggetto ToolItem, è possibile utilizzare immagini con stock_ID predefinito oppure è possibile assegnare un'immagine personalizzata mediante il metodo set_image ().

I seguenti esempi mostrano come costruire diversi ToolItem:

ToolButton

newbtn = gtk.ToolButton(gtk.STOCK_NEW)

RadioToolButton

rb1 = gtk.RadioToolButton(None,gtk.STOCK_JUSTIFY_LEFT) 
rb2 = gtk.RadioToolButton(rb1,gtk.STOCK_JUSTIFY_RIGHT)

Notare che più pulsanti di opzione vengono inseriti nello stesso gruppo.

SeparatorToolItem

sep = gtk.SeparatorToolItem()

Questi elementi vengono inseriti nella barra degli strumenti chiamando il suo insert metodo.

gtk.Toolbar.insert(item, index)

Per esempio,

bar.insert(new,0)

Puoi anche assegnare un suggerimento al ToolButton usando il nethod set_tooltip_text (). Per esempio,New il suggerimento viene assegnato al nuovo ToolButton.

newbtn.set_tooltip_text("New")

Esempio

Il codice seguente mostra una finestra di primo livello con una barra degli strumenti impostata per contenere un normale strumento, elementi radio e un elemento separatore.

import gtk

class PyApp(gtk.Window):

   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("Toolbar Demo")
      self.set_default_size(250, 200)
      self.set_position(gtk.WIN_POS_CENTER)
      
      toolbar = gtk.Toolbar()
      toolbar.set_style(gtk.TOOLBAR_ICONS)
      toolbar.set_orientation(gtk.ORIENTATION_HORIZONTAL)
      
      newbtn = gtk.ToolButton(gtk.STOCK_NEW)
      newbtn.set_tooltip_text("New")
      openbtn = gtk.ToolButton(gtk.STOCK_OPEN)
      savebtn = gtk.ToolButton(gtk.STOCK_SAVE)
      sep = gtk.SeparatorToolItem()
      
      rb1 = gtk.RadioToolButton(None,gtk.STOCK_JUSTIFY_LEFT)
      53
      rb2 = gtk.RadioToolButton(rb1,gtk.STOCK_JUSTIFY_RIGHT)
      
      prv = gtk.ToggleToolButton(gtk.STOCK_PRINT_PREVIEW)
      quitbtn = gtk.ToolButton(gtk.STOCK_QUIT)
      
      toolbar.insert(newbtn, 0)
      toolbar.insert(openbtn, 1)
      toolbar.insert(savebtn, 2)
      toolbar.insert(sep, 3)
      toolbar.insert(rb1,4)
      toolbar.insert(rb2,5)
      toolbar.insert(prv,6)
      toolbar.insert(quitbtn, 7)
      
      quitbtn.connect("clicked", gtk.main_quit)
      vbox = gtk.VBox(False, 2)
      vbox.pack_start(toolbar, False, False, 0)
      
      self.add(vbox)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
   
   def on_checked(self, widget, data = None):
      state = "Button1 : "+str(self.btn1.get_active())+" 
         Button2 : "+str(self.btn2.get_active())
      self.lbl.set_text(state)
if __name__ == '__main__':
   PyApp()
   gtk.main()

Il codice sopra genererà il seguente output: