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.tw511.com') 
ex.MainLoop() 
上面的程式碼產生下面的輸出 -