PyGTK - Classe de barre d'outils

La classe Toolbar est héritée de la classe gtk.Container. Il contient et gère un ensemble de boutons et autres widgets. Une ou plusieurs bandes horizontales de boutons sont normalement visibles juste en dessous de la barre de menus dans une fenêtre de niveau supérieur. La barre d'outils peut également être placée dans une fenêtre détachable appelée HandleBox. Par défaut, les boutons du widget gtk.Toolbar sont disposés horizontalement. La barre d'outils verticale peut être configurée en définissant la propriété d'orientation surgtk.ORIENTATION_VERTICAL.

La barre d'outils peut être configurée pour afficher des boutons avec des icônes, du texte ou les deux. Les énumérateurs de style sont -

gtk.TOOLBAR_ICONS Ces boutons affichent uniquement des icônes dans la barre d'outils.
gtk.TOOLBAR_TEXT Ces boutons affichent uniquement les étiquettes de texte dans la barre d'outils.
gtk.TOOLBAR_BOTH Ces boutons affichent du texte et des icônes dans la barre d'outils.
gtk.TOOLBAR_BOTH_HORIZ Ces boutons affichent les icônes et le texte côte à côte, plutôt qu'empilés verticalement.

Un widget Toolbar est configuré à l'aide du constructeur suivant -

bar = gtk.Toolbar()

Les constituants de Toolbar sont des instances de gtk.ToolItem. Les éléments peuvent être ToolButton, RadioToolButton, ToggleToolButton ou SeparatorToolItem. Afin d'attribuer une icône à l'objet ToolItem, des images avec stock_ID prédéfini peuvent être utilisées ou une image personnalisée peut être attribuée par la méthode set_image ().

Les exemples suivants montrent comment construire différents ToolItems -

ToolButton

newbtn = gtk.ToolButton(gtk.STOCK_NEW)

RadioToolButton

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

Notez que plusieurs boutons radio sont placés dans le même groupe.

SeparatorToolItem

sep = gtk.SeparatorToolItem()

Ces éléments sont placés dans la barre d'outils en appelant son insert méthode.

gtk.Toolbar.insert(item, index)

Par exemple,

bar.insert(new,0)

Vous pouvez également affecter une info-bulle au ToolButton à l'aide de la méthode set_tooltip_text (). Par exemple,New tooltip est assigné au nouveau ToolButton.

newbtn.set_tooltip_text("New")

Exemple

Le code suivant montre une fenêtre de niveau supérieur avec une barre d'outils configurée pour contenir un élément d'outil normal, des éléments radio et un élément de séparation.

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()

Le code ci-dessus générera la sortie suivante -