wxPython 工具栏类

wxPython 工具栏类

通常在顶级框架的菜单栏下方放置一个或多个水平条状的工具栏,其中包含有文本标题或图标的按钮。

如果 wx.Toolbar 对象的 style 参数设置为 wx.TB_DOCKABLE,则该工具栏可停靠。也可以使用 wxPython 的 AUIToolBar 类构建一个浮动工具栏。

构造函数没有任何参数时会使用默认参数创建一个工具栏。可以通过以下方式向 wx.ToolBar 类的构造函数传递额外的参数 −

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

为wx.ToolBar定义的样式参数包括以下常量:

以下是wx.ToolBar的最常用参数。

序号 参数和描述
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类具有以下有用的方法。

下面是wx.ToolBar最常用的方法。

序号 方法及描述
1 AddTool() 向工具栏添加一个工具按钮。工具的类型由kind参数指定。
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)

parent参数是将按钮添加到的工具栏。图标由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"))

现在使用AddControl()方法将wx.ComboBox控件添加到工具栏中。下拉列表框中包含字体的名称。

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)

各自的事件处理程序的append方法处理事件源。当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') 
ex.MainLoop()

上述代码产生以下输出 –

wxPython 工具栏类

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程