PyGTK - Lớp Thanh công cụ

Lớp thanh công cụ được kế thừa từ lớp gtk.Container. Nó giữ và quản lý một tập hợp các nút và các vật dụng khác. Một hoặc nhiều dải nút nằm ngang thường được nhìn thấy ngay bên dưới thanh menu trong cửa sổ cấp cao nhất. Thanh công cụ cũng có thể được đặt trong một cửa sổ có thể tháo rời được gọi là HandleBox. Theo mặc định, các nút trong tiện ích gtk.Toolbar được đặt theo chiều ngang. Thanh công cụ dọc có thể được thiết lập bằng cách đặt thuộc tính định hướng thànhgtk.ORIENTATION_VERTICAL.

Thanh công cụ có thể được định cấu hình để hiển thị các nút có biểu tượng, văn bản hoặc cả hai. Các kiểu điều tra viên là -

gtk.TOOLBAR_ICONS Các nút này chỉ hiển thị các biểu tượng trên thanh công cụ.
gtk.TOOLBAR_TEXT Các nút này chỉ hiển thị các nhãn văn bản trong thanh công cụ.
gtk.TOOLBAR_BOTH Các nút này hiển thị văn bản và biểu tượng trên thanh công cụ.
gtk.TOOLBAR_BOTH_HORIZ Các nút này hiển thị các biểu tượng và văn bản bên cạnh nhau, thay vì xếp chồng lên nhau theo chiều dọc.

Tiện ích của Thanh công cụ được thiết lập bằng cách sử dụng hàm tạo sau:

bar = gtk.Toolbar()

Các thành phần của Thanh công cụ là các bản sao của gtk.ToolItem. Các mục có thể là ToolButton, RadioToolButton, ToggleToolButton hoặc SeparatorToolItem. Để gán biểu tượng cho đối tượng ToolItem, có thể sử dụng hình ảnh có stock_ID xác định trước hoặc có thể gán hình ảnh tùy chỉnh bằng phương thức set_image ().

Các ví dụ sau đây cho thấy cách tạo các ToolItems khác nhau -

ToolButton

newbtn = gtk.ToolButton(gtk.STOCK_NEW)

RadioToolButton

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

Lưu ý rằng nhiều nút radio được đặt trong cùng một nhóm.

SeparatorToolItem

sep = gtk.SeparatorToolItem()

Các mục này được đưa vào thanh công cụ bằng cách gọi insert phương pháp.

gtk.Toolbar.insert(item, index)

Ví dụ,

bar.insert(new,0)

Bạn cũng có thể chỉ định chú giải công cụ cho ToolButton bằng cách sử dụng nethod set_tooltip_text (). Ví dụ,New chú giải công cụ được gán cho ToolButton mới.

newbtn.set_tooltip_text("New")

Thí dụ

Đoạn mã sau đây hiển thị một cửa sổ cấp cao nhất với một thanh công cụ được thiết lập để chứa các mục công cụ bình thường, các mục radio và một mục phân cách.

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

Đoạn mã trên sẽ tạo ra kết quả sau: