wx.toobar工具欄

来源:互联网 发布:淘宝保税区发货 编辑:程序博客网 时间:2024/05/21 19:42

工具栏(toolbar)是一个把你的应用程序中最常用命令或操作分为不同组别的部件. 作为典型,保存、打开、剪切、复制、粘贴、撤销、重做等都是工具栏中的项目. 工具栏的用途是节省时间. 从工具栏执行一个操作你只需一次点击,而从菜单的话要两次操作.

[more…]

#!/usr/bin/python#coding=utf-8#toolbar.pyimport wxclass MyToolBar(wx.Frame):    def __init__(self, parent, id, title):        wx.Frame.__init__(self, parent, id, title, wx.DefaultPosition,                           wx.Size(350, 250))        vbox = wx.BoxSizer(wx.VERTICAL)        toolbar = wx.ToolBar(self, -1,                              style=wx.TB_HORIZONTAL | wx.NO_BORDER)        toolbar.AddSimpleTool(1, wx.Image('./icons/stock_new.png',                                           wx.BITMAP_TYPE_PNG).ConvertToBitmap(),                               '新建', '')        toolbar.AddSimpleTool(2, wx.Image('./icons/stock_open.png',                                           wx.BITMAP_TYPE_PNG).ConvertToBitmap(),                               '打开', '')        toolbar.AddSimpleTool(3, wx.Image('./icons/stock_save.png',                                           wx.BITMAP_TYPE_PNG).ConvertToBitmap(),                               '保存', '')        toolbar.AddSimpleTool(4, wx.Image('./icons/stock_exit.png',                                           wx.BITMAP_TYPE_PNG).ConvertToBitmap(),                               '退出', '')        toolbar.Realize()        vbox.Add(toolbar, 0, border=5)        self.SetSizer(vbox)        self.statusbar = self.CreateStatusBar()        self.Center()        self.Bind(wx.EVT_TOOL, self.OnNew, id=1)        self.Bind(wx.EVT_TOOL, self.OnOpen, id=2)        self.Bind(wx.EVT_TOOL, self.OnSave, id=3)        self.Bind(wx.EVT_TOOL, self.OnExit, id=4)    def OnNew(self, event):        self.statusbar.SetStatusText('新建命令')    def OnOpen(self, event):        self.statusbar.SetStatusText('打开命令')    def OnSave(self, event):        self.statusbar.SetStatusText('保存命令')    def OnExit(self, event):        self.statusbar.SetStatusText('退出命令')class MyApp(wx.App):    def OnInit(self):        frame = MyToolBar(None, -1, 'toolbar.py')        frame.Show(True)        return Trueapp = MyApp(0)app.MainLoop()

wx.BoxSizer 将会在后面的布局章节进行介绍. 工具栏部件可通过三步得以创建.
首先,我们创建一个工具栏对象.

toolbar = wx.ToolBar(self, -1, style=wx.TB_HORIZONTAL | wx.NO_BORDER)

接着我们要通过 AddSimleTool() 方法将一些工具按钮添加到工具栏中. 在参考书中你是找不到这个方法的. 它是一个 wxPython“扩展”. 这既是好事同时也有坏处. 这些扩展令到 python 编程更为容易. 但另一方面,它们又都没有良好的文档. 你毋须去看封装代码、演示实例或在邮件列表上问其他人.

toolbar.AddSimpleTool(1, wx.Image('./icons/stock_new.png',                                   wx.BITMAP_TYPE_PNG).ConvertToBitmap(),                       '新建', '')

最后,我们调用了Realize() 方法. 此方法将该工具栏部件呈现或渲染出来.

toolbar.Realize()

工具栏部件有着好几个事件处理器. 在你点击一个工具栏图标时,一个 wx.EVT_COMMAND_TOOL_CLICKED 事件就产生了. 通过wx.EVT_TOOL 处理器,我们将此事件绑定到一个特定的方法.

为了给这些事件显示处一些有意义的输出,我们建立了一个状态栏.

self.statusbar = self.CreateStatusBar()

这又是另一个 wxPython 扩展. 如此一来,在我们点击一个工具栏按钮时,状态栏上就会显示出一条消息. 这是通过 SetStatusText() 方法实现的.

f-05

图:toolbar.py

0 0
原创粉丝点击