- 浏览: 38955 次
- 性别:
- 来自: 北京
最近访客 更多访客>>
最新评论
-
pk272205020:
哈哈,写得不错
ext单页面框架结构 -
onlydo:
source 不错。
ext单页面框架结构 -
sixstar:
ruderal 写道evernote3 有算流量的好像..
...
google啊,不相信你了 -
ruderal:
evernote3 有算流量的好像..
google啊,不相信你了 -
realzhang:
一直用evernote的飘过。
google啊,不相信你了
(二)Menus and Toolbars in wxPython
1 组成
一个菜单是由wx.MenuBar, wx.Menu 和 wx.MenuItem三个部分组成 wx.MenuBar是 wx.Menu的容器,wx.Menu是wx.MenuItem的容器
一个简单示例
2 Icons, shortcuts, events
一个带图标的例子
3 Submenus
菜单下面的menuitem可以有子菜单 便于分类 还可以添加分隔符
例子程序
4 Various menu items包含
normal item
check item
radio item
一个带有CheckItem的例子
5 Context menu
定义弹出式菜单 比如右键点击某个目标时候弹出的菜单
一个实例程序
6 Toolbars 快捷的工具栏
参数表CreateToolBar(long style=-1, int winid=-1, String name=ToolBarNameStr)
另一个例子 两个toolbar
纵向toolbar
带有分隔符的toolbar
#!/usr/bin/python
# toolbars.py
1 组成
一个菜单是由wx.MenuBar, wx.Menu 和 wx.MenuItem三个部分组成 wx.MenuBar是 wx.Menu的容器,wx.Menu是wx.MenuItem的容器
一个简单示例
python 代码
- import wx
- #构造一个带菜单的窗口 继承wx.Frame
- class SimpleMenu(wx.Frame):
- def __init__(self, parent, id, title):
- wx.Frame.__init__(self, parent, id, title, size=(250,250))
- #构造一个MenuBar
- menubar=wx.MenuBar()
- #构造一个Menu
- file=wx.Menu()
- #给Menu添加一个MenuItem
- file.Append(-1,'Quit', 'Quit application')
- #给MenuBar添加一个Menu 就是上面的file
- menubar.Append(file, '&File')
- #让Frame加上这个menubar
- self.SetMenuBar(menubar)
- #用继承自windows的方法来设置位置
- self.Centre()
- self.Show(True)
- app = wx.App()
- SimpleMenu(None, -1, 'simple menu example')
- app.MainLoop()
2 Icons, shortcuts, events
一个带图标的例子
python 代码
- import wx
- class MenuExample(wx.Frame):
- def __init__(self, parent, id, title):
- wx.Frame.__init__(self, parent, id, title, size=(250,150))
- menubar = wx.MenuBar()
- file = wx.Menu()
- #这里用了添加MenuItem的另一种方法 先添加一个MenuItem Object而不是直接在Menu上Append
- #如果想添加图标就要自己手动的创建wx.MenuItem对象
- quit = wx.MenuItem(file, 1, '&Quit\tCtrl+q')
- #设置图标的地址
- quit.SetBitmap(wx.Bitmap('icons/bp_btn2.png'))
- file.AppendItem(quit)
- #添加一个事件
- self.Bind(wx.EVT_MENU, self.onQuit, id=1)
- menubar.Append(file, '&File')
- self.SetMenuBar(menubar)
- self.Centre()
- self.Show(True)
- #定义关闭按钮事件
- def onQuit(self, event):
- self.Close()
- app = wx.App()
- MenuExample(None, -1, '')
- app.MainLoop()
3 Submenus
菜单下面的menuitem可以有子菜单 便于分类 还可以添加分隔符
例子程序
python 代码
- import wx
- ID_QUIT = 1
- class SubmenuExample(wx.Frame):
- def __init__(self, parent, id, title):
- wx.Frame.__init__(self, parent, id, title, size=(350,250))
- #构造一个wx.MenuBar
- menubar = wx.MenuBar()
- #构造一个wx.Menu 并添加wx.MeunItem 和一个分隔符
- file = wx.Menu()
- file.Append(-1, '&New')
- file.Append(-1, '&Open')
- file.Append(-1, '&Save')
- file.AppendSeparator()
- #新构造一个wx.Menu
- imp = wx.Menu()
- imp.Append(-1, 'Import newsfeed list...')
- imp.Append(-1, 'Import bookmarks...')
- imp.Append(-1, 'Import mail...')
- #把这个菜单作为file的子菜单添加进来 用 AppenMenu() 方法
- file.AppendMenu(-1, '&Import', imp)
- quit = wx.MenuItem(file, ID_QUIT, '&Quit\tCtrl+W')
- quit.SetBitmap(wx.Bitmap('icons/bp_btn2.png'))
- file.AppendItem(quit)
- self.Bind(wx.EVT_MENU, self.OnQuit, id=ID_QUIT)
- menubar.Append(file, '&File')
- self.SetMenuBar(menubar)
- self.Centre()
- self.Show(True)
- def OnQuit(self, event):
- self.Close()
- app = wx.App()
- SubmenuExample(None, -1, 'Submenu')
- app.MainLoop()
4 Various menu items包含
normal item
check item
radio item
一个带有CheckItem的例子
python 代码
- import wx
- ID_STAT = 1
- ID_TOOL = 2
- class CheckMenuItem(wx.Frame):
- def __init__(self, parent, id, title):
- wx.Frame.__init__(self, parent, id, title, size=(350, 250))
- menubar = wx.MenuBar()
- file = wx.Menu()
- view = wx.Menu()
- #在view这个Menu上加上两个check item id用在前面定义的ID_STAT和ID_TOOL
- #如果想定义为check类型的item就要在Append()后面加上一个参数kind=wx.ITEM_CHECK 默认的是wx.ITEM_NORMAL
- #Append返回的是一个wx.MeunItem
- self.shst = view.Append(ID_STAT, 'show statubar', 'Show StatuBar', kind=wx.ITEM_CHECK)
- self.shtl = view.Append(ID_TOOL, 'show toolbar', 'Show ToolBar', kind=wx.ITEM_CHECK)
- #默认把这两项勾选上
- view.Check(ID_STAT, True)
- view.Check(ID_TOOL, True)
- #绑定这两个check item的事件函数
- self.Bind(wx.EVT_MENU, self.ToggleStatusBar, id=ID_STAT)
- self.Bind(wx.EVT_MENU, self.ToggleToolBar, id=ID_TOOL)
- menubar.Append(file, '&File')
- menubar.Append(view, '&View')
- #把这个menubar天到Frame上
- self.SetMenuBar(menubar)
- #给Frame添加一个toolbar
- self.toolbar = self.CreateToolBar()
- self.toolbar.AddLabelTool(3, '', wx.Bitmap('icons/bp_btn2.png'))
- #给Frame添加一个statubar
- self.statusbar = self.CreateStatusBar()
- self.Centre()
- self.Show(True)
- #定义StatusBar的check事件
- def ToggleStatusBar(self, event):
- #如果勾选了 就显示StatusBar
- if self.shst.IsChecked():
- self.statusbar.Show()
- #如果没有勾选 就隐藏StatusBar
- else:
- self.statusbar.Hide()
- #同样的定义toolbar的check事件
- def ToggleToolBar(self, event):
- if self.shtl.IsChecked():
- self.toolbar.Show()
- else:
- self.toolbar.Hide()
- app = wx.App()
- CheckMenuItem(None, -1, 'check menu item')
- app.MainLoop()
5 Context menu
定义弹出式菜单 比如右键点击某个目标时候弹出的菜单
一个实例程序
python 代码
- import wx
- #创建一个分离的Menu class
- class MyPopupMenu(wx.Menu):
- def __init__(self, parent):
- wx.Menu.__init__(self)
- self.parent = parent
- #定义一个最小化窗口的item
- minimize = wx.MenuItem(self, wx.NewId(), 'Minimize')
- self.AppendItem(minimize)
- self.Bind(wx.EVT_MENU, self.OnMinimize, id=minimize.GetId())
- #定义一个关闭窗口的item
- close = wx.MenuItem(self, wx.NewId(), 'Close')
- #给Menu添加这个Close的Item 用的是AppendItem方法 因为是在Menu上添加,不是在MenuBar上添加
- self.AppendItem(close)
- self.Bind(wx.EVT_MENU, self.OnClose, id=close.GetId())
- #最小化窗口
- def OnMinimize(self, event):
- self.parent.Iconize()
- #关闭窗口
- def OnClose(self, event):
- self.parent.Close()
- class ContextMenu(wx.Frame):
- def __init__(self, parent, id, title):
- wx.Frame.__init__(self, parent, id, title, size=(250,150))
- #出发弹出窗口的事件是wx.EVT_RIGHT_DOWN 调用 OnRightDown
- self.Bind(wx.EVT_RIGHT_DOWN, self.OnRightDown)
- self.Centre()
- self.Show()
- def OnRightDown(self, event):
- #第一个参数是弹出的窗口 第二个参数是位置
- self.PopupMenu(MyPopupMenu(self), event.GetPosition())
- app = wx.App()
- frame = ContextMenu(None, -1, 'context menu')
- app.MainLoop()
6 Toolbars 快捷的工具栏
参数表CreateToolBar(long style=-1, int winid=-1, String name=ToolBarNameStr)
python 代码
- #!/usr/bin/python
- # simpletoolbar.py
- import wx
- class SimpleToolbar(wx.Frame):
- def __init__(self, parent, id, title):
- wx.Frame.__init__(self, parent, id, title, size=(300, 200))
- toolbar = self.CreateToolBar()
- #self.toolbar.AddLabelTool(wx.ID_EXIT, '', wx.Bitmap('icons/bp_btn2.png'))
- #AddSimpleTool方法来创建一个tool 不知道为什么调用上面的方法不其作用
- toolbar.AddSimpleTool(wx.ID_EXIT, wx.Image('icons/bp_btn2.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'New', '')
- #添加tool完了以后 调用此方法 在linux上不需要
- toolbar.Realize()
- #给这个tool添加事件处理
- self.Bind(wx.EVT_TOOL, self.OnExit, id=wx.ID_EXIT)
- self.Centre()
- self.Show(True)
- #定义这个tool bind的事件处理函数
- def OnExit(self, event):
- self.Close()
- app = wx.App()
- SimpleToolbar(None, -1, 'simple toolbar')
- app.MainLoop()
另一个例子 两个toolbar
python 代码
- #!/usr/bin/python
- # toolbars.py
- import wx
- class Toolbars(wx.Frame):
- def __init__(self, parent, id, title):
- wx.Frame.__init__(self, parent, id, title, size=(300, 200))
- #用一个BoxSizer容器来控制显示这两个toolbar
- vbox = wx.BoxSizer(wx.VERTICAL)
- toolbar1 = wx.ToolBar(self, -1)
- toolbar1.AddSimpleTool(wx.ID_ANY, wx.Image('icons/book_red.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'New', '')
- toolbar1.AddSimpleTool(wx.ID_ANY, wx.Image('icons/book_green.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'New', '')
- toolbar1.AddSimpleTool(wx.ID_ANY, wx.Image('icons/process.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'New', '')
- toolbar1.Realize()
- toolbar2 = wx.ToolBar(self, -1)
- toolbar2.AddSimpleTool(wx.ID_EXIT, wx.Image('icons/customcontrol.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'New', '')
- toolbar2.Realize()
- vbox.Add(toolbar1, 0, wx.EXPAND)
- vbox.Add(toolbar2, 0, wx.EXPAND)
- self.Bind(wx.EVT_TOOL, self.OnExit, id=wx.ID_EXIT)
- self.SetSizer(vbox)
- self.Centre()
- self.Show(True)
- def OnExit(self, event):
- self.Close()
- app = wx.App()
- Toolbars(None, -1, 'toolbars')
- app.MainLoop()
纵向toolbar
python 代码
- #!/usr/bin/python
- # verticaltoolbar.py
- import wx
- class VerticalToolbar(wx.Frame):
- def __init__(self, parent, id, title):
- wx.Frame.__init__(self, parent, id, title, size=(240, 300))
- #wx.TB_VERTICAL是纵向 wx.VERTICAL 是横向
- toolbar = self.CreateToolBar(wx.TB_VERTICAL)
- toolbar.AddSimpleTool(wx.ID_ANY, wx.Image('icons/book_red.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'New', '')
- toolbar.AddSimpleTool(wx.ID_ANY, wx.Image('icons/book_green.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'New', '')
- toolbar.AddSimpleTool(wx.ID_REDO, wx.Image('icons/process.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'New', '')
- toolbar.AddSimpleTool(wx.ID_EXIT, wx.Image('icons/customcontrol.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'New', '')
- toolbar.Realize()
- self.Centre()
- self.Show(True)
- def OnExit(self, event):
- self.Close()
- app = wx.App()
- VerticalToolbar(None, -1, 'vertical toolbar')
- app.MainLoop()
带有分隔符的toolbar
#!/usr/bin/python
# toolbars.py
python 代码
- import wx
- class Toolbars(wx.Frame):
- def __init__(self, parent, id, title):
- wx.Frame.__init__(self, parent, id, title, size=(300, 200))
- #这里如果不加wx.VERTICAL就编程一排的了
- vbox = wx.BoxSizer(wx.VERTICAL)
- toolbar1 = wx.ToolBar(self, -1)
- toolbar1.AddSimpleTool(wx.ID_ANY, wx.Image('icons/book_red.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'New', '')
- toolbar1.AddSimpleTool(wx.ID_ANY, wx.Image('icons/book_green.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'New', '')
- #添加一个分隔符
- toolbar1.AddSeparator()
- toolbar1.AddSimpleTool(wx.ID_REDO, wx.Image('icons/process.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'New', '')
- toolbar1.EnableTool(wx.ID_REDO, False)
- toolbar1.Realize()
- toolbar2 = wx.ToolBar(self, -1)
- toolbar2.AddSimpleTool(wx.ID_EXIT, wx.Image('icons/customcontrol.png', wx.BITMAP_TYPE_PNG).ConvertToBitmap(), 'New', '')
- toolbar2.Realize()
- vbox.Add(toolbar1, 0, wx.EXPAND)
- vbox.Add(toolbar2, 0, wx.EXPAND)
- self.Bind(wx.EVT_TOOL, self.OnExit, id=wx.ID_EXIT)
- self.SetSizer(vbox)
- self.Centre()
- self.Show(True)
- def OnExit(self, event):
- self.Close()
- app = wx.App()
- Toolbars(None, -1, 'toolbars')
- app.MainLoop()
相关推荐
您可以在几分钟内编写一段...这篇文章是关于 wxPython,但 wxPython 实际是两件事物的组合体:Python 脚本语言和 GUI 功能的 wxWindows 库(关于 wxWindows 的介绍,请参阅 developerWorks上的 “细述 wxWindows” )。
### wxPython学习笔记 #### 一、简介 wxPython是一个为Python编程语言设计的图形用户界面(GUI)工具包。它允许Python程序员轻松地构建出功能丰富且强大的GUI应用程序。作为一个对wxWidgets库的Python绑定,...
**wxPython 4.0.7.post2:Python GUI编程的利器** `wxPython` 是一个流行的Python绑定库,它提供了跨平台的图形用户界面(GUI)工具包,基于C++实现的`wxWidgets`库。`wxWidgets`库自身支持多种操作系统,包括...
2. **布局管理器**:wxPython使用布局管理器(如BoxSizer、GridSizer、FlexGridSizer)来帮助组织和调整窗口中的控件。了解它们的工作原理和配置方式,可以创建出美观且适应不同屏幕尺寸的界面。 3. **事件处理**:...
几本很不错的关于python gui的wxPython的书,包括“wxPython in Action(中文版)” 活学活用wxPython “《wxPython in Action》Noel Rappin, Robin Dunn著 2006年版”
1,导入 wxpython 库 import wx 2,建立窗体构造类 class 名字(wx.Frame): def __init__(self, parent, id): wx.Frame.__init__(self, parent, id, ‘工具’,size=(300, 200)) 3,建立 面板 panel = wx.Panel(self...
这个压缩包文件"wxPython-demo-4.0.6_wxpython官方demo_wxPython-demo_wxpython_DEMO_w"包含了wxPython的官方演示程序,是学习和探索wxPython功能的理想资源。 【wxPython Demo】是wxPython库附带的一系列示例和...
2. `wxPython.wx`包含了所有与GUI相关的类和函数。 3. 定义了一个名为_window的类,继承自wxFrame,这是wxPython中的一个基本窗口类。 4. `__init__`方法是初始化函数,创建了一个窗口实例,设置了窗口的大小、样式...
《wxPython in Action 活学活用wxPython》是一本深入浅出的教程,旨在帮助读者掌握使用wxPython这一强大的GUI(图形用户界面)工具包进行Python编程的方法。wxPython是Python编程语言中用于创建桌面应用的一个流行库...
【Python 2.4 和 wxPython】 Python 2.4 是 Python 语言的一个较旧版本,它在2004年发布,并于2010年停止支持。这个版本包含了许多基础的Python特性,如元组赋值、生成器、with语句等。然而,随着语言的发展,许多新...
【wxPython中文文档详解】 wxPython是一款用于创建GUI(图形用户界面)的Python库,它提供了丰富的组件和功能,使得开发者能够用Python语言构建出美观且功能强大的桌面应用程序。wxPython是基于流行的wxWidgets库,...
Python WxPython开源扫雷游戏PyMine为开源扫雷游戏PyMine 使用Python语言和WxPython UI框架。本例移植自开源例程JMine 请在程序所在目录使用python PyMine.py启动例程需要先安装Python 3.11和wxPython 4.2Python ...
2. **wxPython2.9-win32-docs-demos-2.9.4.0.exe** - 这是一个包含wxPython 2.9的Windows 32位版本的文档和演示程序的安装包,可能包括API参考、示例代码和教程。 3. **wxPython in Action.pdf** - 这可能是另一本...
2. **基础知识**:讲解`wxPython`的基本概念,如窗口、框架、面板、事件处理和布局管理器。 3. **控件与组件**:详述各种控件的使用,如按钮、文本框、复选框、单选按钮、列表框、滑块等,以及如何在界面中添加它们...
wxPython是Python编程语言的一个GUI工具箱。他使得Python程序员能够轻松的创建具有健壮、功能强大的图形用户界面的程序。它是Python语言对流行的wxWidgets跨平台GUI工具库的绑定。而wxWidgets是用C++语言写成的。和...
2. **定义类**:定义一个自定义的GLCanvas类,继承自wx.GLCanvas。这个类将处理OpenGL上下文的创建、初始化以及渲染循环。 3. **初始化**:在类的构造函数中,设置OpenGL上下文属性,如颜色缓冲、深度缓冲等,并可能...
[2]from wxPython.wx import * [3]class _window(wxFrame): [4] def __init__(self, parent, id, title): [5] wxFrame.__init__(self, parent, -1, title, size=(200, 100), style=wxDEFAULT_FRAME_STYLE | wxNO_...
**wxPython 开发指南** **一、什么是 wxPython** wxPython 是一个 Python 模块,它为 Python 程序员提供了与操作系统用户界面(GUI)进行交互的能力。它是基于跨平台的 wxWidgets 库,使得开发者可以用 Python 来...