[Python] wxPython 菜单栏控件学习总结(原创)

1、总结

  1、大体创建过程

    1、创建一个 菜单栏  : menuBar = wx.MenuBar()

      

      相当于这个白色地方,没有File这个菜单

    2、创建 菜单 : fileMenu = wx.Menu()

      

      这两个不是直接“用的”,叫菜单。既用来分类其他 菜单项 的文件夹样

    3、创建 菜单项 : newItem = wx.MenuItem()

      例如上图的 New Copy Cut Paste Radio_One 等等等等。

      这些可以直接“点”的(看作按钮)的叫做 菜单项。

      创建的时候需要分配 id (int 整数),到时候菜单事件处理的时候需要通过传递的 id (event.GetId())来判断单击的按钮。

    4、将 菜单项 添加到 菜单中 : fileMenu.AppendItem(newItem)

      这样当我们单机 File 的时候就会打开这个"文件夹"

      

      并且展示内容,添加多少就展示多少,并且按添加的顺序展示

    5、将 菜单 添加到 菜单栏 中 : menuBar.Append(fileMenu, title = "File")

      之前我们只是构建了一个上图红框+File菜单 的一个整体对象:fileMenu。

      然后我们要把这个 菜单对象 添加到菜单栏中。

    6、将该 菜单栏 设置为我们窗口框架的“菜单栏” : self.SetMenuBar(menuBar)

      即将之前建立的 菜单栏对象 放到窗口上去。

    7、绑定 菜单事件 : self.Bind(wx.EVT_MENT, self.menuHandler)

      调用 Bind() 这个绑定事件的函数,因为其他组件 比如按钮 编辑框 都有事件。

      所以这里的 wx.EVT_MENT 是表示绑定的是 菜单事件。

      menuHandler() 是自定义函数 用来菜单事件。

      

      id = event.GetId() 用来判断单击的 菜单项。

      函数参数名称:event 不能变,只能是这个单词。

    8、窗口框架的处理 : 与菜单栏无关了

      例如 调整大小、出现位置、是否可见

      

   2、各项详解(参考其他)

    1、用到的 class :

      菜单栏 : wx.MenuBar 类

      wx.MenuBar() 
      wx.MenuBar(n, menus, titles, style)

      有一个参数的构造函数,此外还有一个默认的。

      参数“n”表示的菜单的数目。Menu是菜单和标题的数组和字符串数组。如果style参数设置为wx.MB_DOCKABLE,菜单栏可以停靠。

      

      菜单 : wx.Menu 类

      wx.Menu类对象是一个或多个菜单项,其中一个可被用户选择的下拉列表。

        

       该开始 new 菜单对象的时候 只要 fileMenu = wx.Menu() 即可

      之后添加菜单项目的时候,可直接使用 Append() 函数添加,或 wx.MenuItem 类的一个对象被追加。

      wx.Menu.Append(id, text, kind)
        
      Item = Wx.MenuItem(parentmenu, id, text, kind) 
      wx.Menu.Append(Item)

 

      菜单项:wx.MenuItem 类

      当我们 new 菜单项对象时 需要填几个参数。

newItem = wx.MenuItem(parentMenu, id, text, kind)

 

      其中 :

      parentMenu 为其 菜单的对面,比如上文提到的 newMenu 菜单项的 parentMenu 为 fileMenu

      id 为该菜单项的 id 到时候处理 菜单项时间的时候需要用到滴

      text 为这个菜单项的名称

      kind 为该菜单项的类型

      ①注册 快捷键的方法 :参数text = "名称/t快捷键"

      比如 text = "Quit/tCtrl+Q"

      这样就注册了 Ctrl + Q 的快捷键

      ②其他类型菜单项的方法

      菜单项有 3 种:

      

      只需要 参数 kind = 相关类型常量即可

2、感想

  期间看了找了挺多资料 : http://www.yiibai.com/wxpython/wxpython_menus.html#

  这个里面的很详细,且例子经典。

  o.o 要是先看不懂,就敲抄一边会好很多。

  关于wxPyton 中菜单栏的运用的,以下代码能够很好的展示相关的操作方法。

3、样例代码

  

 1 #coding:utf-8
 2 #author:Twobox
 3 
 4 import wx
 5 
 6 class Mywin(wx.Frame):
 7     def __init__(self, parent, title):
 8         super(Mywin, self).__init__(parent, title = title)
 9         self.InitUI()
10 
11     def InitUI(self):
12         #创建一个菜单栏
13         menuBar = wx.MenuBar()
14 
15         #创建一个菜单 1
16         fileMenu = wx.Menu()
17 
18         #创建一个菜单项 1-1
19         newItem = wx.MenuItem(fileMenu, id = wx.ID_NEW, text = 'New', kind = wx.ITEM_NORMAL)
20         fileMenu.AppendItem(newItem)
21 
22         #添加一行线
23         fileMenu.AppendSeparator()
24 
25         #创建一个子菜单 1-2
26         editMenu = wx.Menu()
27 
28         #创建三个子菜单的菜单项目 1-2-1 and 1-2-2 and 1-2-3
29         cutItem = wx.MenuItem(editMenu, id = 122, text = "Cut", kind = wx.ITEM_NORMAL)
30         copyItem = wx.MenuItem(editMenu, id = 121, text = "Copy", kind = wx.ITEM_NORMAL)
31         pasteItem = wx.MenuItem(editMenu, id = 123, text = "Paste", kind = wx.ITEM_NORMAL)
32         editMenu.AppendItem(copyItem)
33         editMenu.AppendItem(cutItem)
34         editMenu.AppendItem(pasteItem)
35 
36         #把子菜单 1-2 添加到菜单 1 中
37         fileMenu.AppendMenu(wx.ID_ANY, "Edit", editMenu)
38 
39         # 添加一行线
40         fileMenu.AppendSeparator()
41 
42         #添加两个单选框 1-3 and 1-4
43         radio1 = wx.MenuItem(fileMenu, id = 13, text = "Radio_One", kind = wx.ITEM_RADIO)
44         radio2 = wx.MenuItem(fileMenu, id = 14, text = "Radio_Two", kind = wx.ITEM_RADIO)
45         fileMenu.AppendItem(radio1)
46         fileMenu.AppendItem(radio2)
47         #PS.单选框 只在自己区域之间(两行线之间) 相互作用
48 
49         # 添加一行线
50         fileMenu.AppendSeparator()
51 
52         #添加一个 可选中 的菜单项 1-5
53         fileMenu.AppendCheckItem(id = 15, item = "Check")
54 
55         #添加一个 菜单项 1-6 并注册快捷键
56         quit = wx.MenuItem(fileMenu, id = wx.ID_EXIT, text = "Quit\tCtrl+Q", kind = wx.ITEM_NORMAL)
57         fileMenu.AppendItem(quit)
58 
59         #将 fileMenu 菜单添加到菜单栏中
60         menuBar.Append(fileMenu, title = 'File')
61 
62         #设置窗口框架的菜单栏为 menuBar
63         self.SetMenuBar(menuBar)
64 
65         #绑定事件处理
66         self.Bind(wx.EVT_MENU, self.menuHandler)
67 
68         #让其在屏幕中间打开调整大小展示
69         self.SetSize((300,400))
70         self.Centre()
71         self.Show()
72 
73     def menuHandler(self, event):
74         id = event.GetId()
75         if id == wx.ID_NEW:
76             print("NEW")
77         if id == wx.ID_EXIT:
78             exit(0)
79 
80 
81 
82 if __name__ == "__main__":
83     ex = wx.App()
84     Mywin(None, 'Menu - Test')
85     #Mywin(None, 'Menu - Test')      #可以同时打开两个窗口  果然体现面向对象的程序开发思想
86     ex.MainLoop()

2017-08-20 14:21:26

 

    

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python3和wxPython是一对非常强大、灵活和易用的技术组合。Python3是一种高级编程语言,有许多优秀的特性,包括代码简洁、易读、易维护、强类型支持、面向对象编程等,被广泛用于Web应用程序、人工智能、科学计算等领域。wxPython是一个开源的Python界面工具包,它允许开发者使用Python编写桌面应用程序,并提供了丰富的构建工具、图像控件、数据输入输出等。 Python3与wxPython结合使用的主要好处是开发速度非常快、效率非常高。开发者可以使用Python编写桌面应用程序,然后使用wxPython提供的丰富的构建工具,轻松地在应用程序中增加各种控件,例如文本框、按钮、复选框、单选框、列表框等。此外,wxPython还可以实现许多高级功能,例如进度条、对话框、菜单、工具栏等。 此外,使用Python3和wxPython还有其他一些好处。它们不需要太多的系统资源,通常可以在较旧的计算机上运行。它们支持跨平台,可以在Windows、Mac和Linux等不同的操作系统上运行。这些特性使Python3和wxPython成为构建桌面应用程序的首选工具组合。 最后,Python3和wxPython还存在一些缺点。例如,使用Python编写的应用程序通常比编写C ++或Java等更慢。此外,Python3和wxPython有着复杂的语法和调试等困难。支持库是稀缺的,所以开发者可能需要在自己的项目中编写大量代码。 总之,Python3和wxPython是一对非常强大、高效、易用的工具组合,被广泛使用于桌面应用程序开发、Web开发、人工智能、科学计算等领域。虽然存在一些缺点,但是它们的优点远大于缺点,因此它们非常适合初学者和专业开发者使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值