wxPython ToolBar類

工具欄包括文本文字說明或圖標按鈕的一個或多個水平條,通常被放置在MenuBar頂層幀的正下方。

如果wx.Toolbar對象的style參數設置爲wx.TB_DOCKABLE,它成爲可停靠。浮動工具欄還可以用wxPython中的AUIToolBar類來構造。

構造函數不帶任何參數則使用工具欄默認參數。附加參數可以傳遞給wx.ToolBar類構造如下 -

Wx.ToolBar(parent, id, pos, size, style)

對於wx.ToolBar定義的樣式參數包括常數 -

S.N.

參數和說明

1

wx.TB_FLAT

提供該工具欄平面效果

2

wx.TB_HORIZONTAL

指定水平佈局(默認)

3

wxTB_VERTICAL

指定垂直佈局

4

wx.TB_DEFAULT_STYLE

結合wxTB_FLAT和wxTB_HORIZONTAL

5

wx.TB_DOCKABLE

使工具欄浮動和可停靠

6

wx.TB_NO_TOOLTIPS

當鼠標懸停在工具欄不顯示簡短幫助工具提示,

7

wx.TB_NOICONS

指定工具欄按鈕沒有圖標;默認它們是顯示的

8

wx.TB_TEXT

顯示在工具欄按鈕上的文本;默認情況下,只有圖標顯示

不同特徵的工具按鈕可以添加到工具欄。 Wx.ToolBar類具有以下有用的方法 -

S.N.

方法和說明

1

AddTool()

添加工具按鈕到工具欄。工具的類型是由各種參數指定的

2

AddRadioTool()

添加屬於按鈕的互斥組按鈕

3

AddCheckTool()

添加一個切換按鈕到工具欄

4

AddLabelTool()

使用圖標和標籤來添加工具 欄

5

AddSeparator()

添加一個分隔符來表示工具按鈕組

6

AddControl()

添加任何控制工具欄。 例如,wx.Button,wx.Combobox等。

7

ClearTools()

刪除所有在工具欄的按鈕

8

RemoveTool()

從給出工具按鈕移除工具欄

9

Realize()

工具按鈕增加調用

AddTool()方法至少需要三個參數 -

AddTool(parent, id, bitmap) 

父參數是在按鈕被添加到工具欄。通過位圖bitmap參數所指定圖像圖標。

工具按鈕發出EVT_TOOL事件。如果添加到工具欄其他控制必須由各自CommandEvent綁定器到事件處理程序約束。

實例

在下面的例子中,工具欄上顯示兩個正常的工具按鈕,三個單選工具按鈕和一個組合框。

首先,工具欄對象被激活。

tb = wx.ToolBar( self, -1 )
self.ToolBar = tb

使用AddTool()方法,兩個工具的圖標爲「新建」,「保存」被添加。

tb.AddTool( 101, wx.Bitmap("new.png") )
tb.AddTool(102,wx.Bitmap("save.png"))

一組RadioTools,然後添加到工具欄,其中只有一個是可選擇在同一時間。

right = tb.AddRadioTool(222,wx.Bitmap("right.png"))
center = tb.AddRadioTool(333,wx.Bitmap("center.png"))
justify = tb.AddRadioTool(444,wx.Bitmap("justify.png"))

使用wx.ComboBox控件的AddControl()方法添加到工具欄。組合框列表中包含的字體的名稱。

self.combo = wx.ComboBox(tb, 555, value = "Times", choices = ["Arial","Times","Courier"])

Realize() 方法需要被調用,以最終確定工具欄創建。

tb.Realize()

最後,事件綁定器工具欄和組合框被註冊。

tb.Bind(wx.EVT_TOOL, self.Onright)
tb.Bind(wx.EVT_COMBOBOX,self.OnCombo) 

相應的事件處理程序以追加方式處理該事件源。雖然EVT_TOOL事件的ID會顯示在工具欄下方的文本框中,選中的字體名稱添加到它的時候,EVT_COMBOBOX事件觸發。

def Onright(self, event):
self.text.AppendText(str(event.GetId())+"\n")

def OnCombo(self,event):
self.text.AppendText( self.combo.GetValue()+"\n")

整個代碼如下 -

import wx

class Mywin(wx.Frame):

def __init__(self, parent, title):
super(Mywin, self).__init__(parent, title = title)
self.InitUI()

def InitUI(self):
menubar = wx.MenuBar()
menu = wx.Menu()
menubar.Append(menu,"File")
self.SetMenuBar(menubar)

  tb = wx.ToolBar( self, -1 ) 
  self.ToolBar = tb 

  tb.AddTool( 101, wx.Bitmap("new.png") ) 
  tb.AddTool(102,wx.Bitmap("save.png")) 

  right = tb.AddRadioTool(222,wx.Bitmap("right.png")) 
  center = tb.AddRadioTool(333,wx.Bitmap("center.png")) 
  justify = tb.AddRadioTool(444,wx.Bitmap("justify.png"))

  tb.Bind(wx.EVT\_TOOL, self.Onright)
  tb.Bind(wx.EVT\_COMBOBOX,self.OnCombo) 
  self.combo = wx.ComboBox( tb, 555, value = "Times", choices = \["Arial","Times","Courier"\])  

  tb.AddControl(self.combo ) 
  tb.Realize() 
  self.SetSize((350, 250)) 

  self.text = wx.TextCtrl(self,-1, style = wx.EXPAND|wx.TE\_MULTILINE) 
  self.Centre() 
  self.Show(True) 

def Onright(self, event):
self.text.AppendText(str(event.GetId())+"\n")

def OnCombo(self,event):
self.text.AppendText( self.combo.GetValue()+"\n")

ex = wx.App()
Mywin(None,'ToolBar Demo - www.yiibai.com')
ex.MainLoop()

上面的代碼產生下面的輸出 -
wxPython