程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

由浅入深和由简单到复杂,带你学习wxpython的菜单

hfteth 2025-07-28 16:38:19 技术文章 6 ℃

1 菜单栏:

=======

1.1 效果图

1.2 代码:


#菜单栏和水平一行菜单的设置

import wx
 
class MyFrame(wx.Frame):
    def __init__(self):
        #窗口名称
        wx.Frame.__init__(self, None, -1, "菜单menu学习-1")
        #第1步:调出菜单栏,实例化
        menuBar = wx.MenuBar()
        
        #第2步:创建菜单栏上的菜单项目
        #2-1:创建一个开始的菜单
        begin = wx.Menu()
        # 将开始菜单添加到菜单栏上
        menuBar.Append(begin, "开始")
        
        #2-2:创建一个编辑的菜单
        edit = wx.Menu()
        # 将编辑菜单添加到菜单栏上
        menuBar.Append(edit, "编辑")
        
        #2-3:创建一个关于的菜单
        about = wx.Menu()
        #将关于菜单添加到菜单栏上
        menuBar.Append(about, "关于")
        
        #挂在菜单
        self.SetMenuBar(menuBar)
 
if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame()
    frame.Show()
    app.MainLoop()

2 子菜单:

======

2.1 效果图

2.2 代码:

#下拉菜单:二级和三级菜单设置
import wx
 
class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, "菜单menu学习-2")
        #第1步:调出菜单栏,实例化
        menuBar = wx.MenuBar()
        #第2步:创建菜单栏上的菜单项目
        #2-1:创建一个开始的菜单
        begin = wx.Menu()
        # 将开始菜单添加到菜单栏上
        menuBar.Append(begin, "开始")
        #二级菜单设置
        # 2-1-1:在开始菜单下的下拉菜单:添加一个新建菜单
        new= begin.Append(-1, "新建", "新建一个文件")

        #begin.AppendSeparator() #分隔符
        # 2-1-1:在开始菜单下的下拉菜单:添加一个退出菜单
        exit = begin.Append(-1, "退出",'退出窗口')
        
        #2-2:创建一个编辑的菜单
        edit = wx.Menu()
        # 将编辑菜单添加到菜单栏上
        menuBar.Append(edit, "编辑")
        #编辑的二级菜单
        #编辑的二级菜单:剪切
        jianqie= edit.Append(-1, "剪切", "内容剪切")
        #编辑的二级菜单:复制
        fuzhi = edit.Append(-1, "复制",'内容复制')
        #编辑的二级菜单:粘贴
        zhantie= edit.Append(-1, "粘贴", "内容粘贴")
        #编辑的二级菜单:撤销
        chexiao = edit.Append(-1, "撤销",'撤销操作')

        #2-3:创建一个关于的菜单
        about = wx.Menu()
        #将关于菜单添加到菜单栏上
        menuBar.Append(about, "关于")

        #二级菜单设置
        # 2-3-1:在开始菜单下的下拉菜单:添加一个更新菜单
        renew= about.Append(-1, "更新", "更新软件")
        #about.AppendSeparator() #分隔符
        # 2-3-2:在开始菜单下的下拉菜单:添加一个版本菜单
        vesion = about.Append(-1, "版本",'该软件的版本信息')
        # 2-3-3:在开始菜单下的下拉菜单:添加一个个人信息菜单
        #meself = about.Append(-1, "个人信息",'个人信息')
        
        #如果要在个人信息的下拉菜单,再建下拉菜单,这样就会出错
        #meself = about.Append(-1, "个人信息",'个人信息') #注释点
        
        #新建一个个人信息菜单,实例化
        meself = wx.Menu()
        #将个人信息菜单,作为亚菜单(子菜单),添加到关于about菜单上
        about.AppendSubMenu(meself,'个人信息')
        #注意数字:100-200-300,只是区分子菜单,防止搞混
        #也可以1-2-3
        address = wx.MenuItem(meself, 1, text="地址")
        meself.Append(address)
        xueli = wx.MenuItem(meself, 2, text="学历")
        meself.Append(xueli)
        age = wx.MenuItem(meself, 3, text="年龄")
        meself.Append(age)

        #挂在菜单
        self.SetMenuBar(menuBar)
 
if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame()
    frame.Show()
    app.MainLoop()

3 快捷键和类型:

============

3.1 效果图

3.2 代码:

#菜单快捷键设置和类型

import wx
 
class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, "菜单menu学习-3")
        #第1步:调出菜单栏,实例化
        menuBar = wx.MenuBar()
        #第2步:创建菜单栏上的菜单项目
        #2-1:创建一个开始的菜单
        begin = wx.Menu()
        # 将开始菜单添加到菜单栏上
        menuBar.Append(begin, "开始")
        #二级菜单设置
        # 2-1-1:在开始菜单下的下拉菜单:添加一个新建菜单
        new= begin.Append(-1, "新建\tCtrl+N", "新建一个文件")
        #begin.AppendSeparator() #分隔符
        # 2-1-1:在开始菜单下的下拉菜单:添加一个退出菜单
        exit = begin.Append(-1, "退出\tCtrl+E",'退出窗口')
        
        #2-2:创建一个编辑的菜单
        edit = wx.Menu()
        # 将编辑菜单添加到菜单栏上
        menuBar.Append(edit, "编辑")

        #编辑的二级菜单
        #编辑的二级菜单:剪切
        jianqie= edit.Append(-1, "剪切\tCtrl+S", "内容剪切")
        #编辑的二级菜单:复制
        fuzhi = edit.Append(-1, "复制\tCtrl+C",'内容复制')
        #编辑的二级菜单:粘贴
        zhantie= edit.Append(-1, "粘贴\tCtrl+P", "内容粘贴")
        #编辑的二级菜单:撤销
        chexiao = edit.Append(-1, "撤销\tCtrl+R",'撤销操作')
        
        #2-3:创建一个关于的菜单
        about = wx.Menu()
        #将关于菜单添加到菜单栏上
        menuBar.Append(about, "关于")
        #二级菜单设置
        # 2-3-1:在开始菜单下的下拉菜单:添加一个更新菜单
        renew= about.Append(-1, "更新\tCtrl+P", "更新软件")
        #about.AppendSeparator() #分隔符

        # 2-3-2:在开始菜单下的下拉菜单:添加一个版本菜单
        vesion = about.Append(-1, "版本\tCtrl+V",'该软件的版本信息')
        # 2-3-3:在开始菜单下的下拉菜单:添加一个个人信息菜单
        #新建一个个人信息菜单,实例化
        meself = wx.Menu()
        #将个人信息菜单,作为亚菜单(子菜单),添加到关于about菜单上
        about.AppendSubMenu(meself,'个人信息')
        #注意数字:100-200-300,只是区分子菜单,防止搞混
        #也可以1-2-3
        address = wx.MenuItem(meself, 1, text="地址", kind=wx.ITEM_NORMAL)
        meself.Append(address)
        xueli = wx.MenuItem(meself, 2, text="学历", kind=wx.ITEM_NORMAL)
        meself.Append(xueli)
        age = wx.MenuItem(meself, 3, text="年龄", kind=wx.ITEM_NORMAL)
        meself.Append(age)

        #挂在菜单
        self.SetMenuBar(menuBar)
 
if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame()
    frame.Show()
    app.MainLoop()

4 菜单栏的功能定义和弹出框,显示状态栏和设置

=====================================

4.1 效果图:

4.2 代码:


#菜单的功能定义和弹出框
#显示状态栏和设置

import wx
 
class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, "菜单menu学习-4")
        #第1步:调出菜单栏,实例化
        menuBar = wx.MenuBar()
        #第2步:创建菜单栏上的菜单项目
        #2-1:创建一个开始的菜单
        begin = wx.Menu()
        # 将开始菜单添加到菜单栏上
        menuBar.Append(begin, "开始")
        #二级菜单设置
        # 2-1-1:在开始菜单下的下拉菜单:添加一个新建菜单
        new= begin.Append(-1, "新建\tCtrl+N", "新建一个文件")
        #begin.AppendSeparator() #分隔符
        # 2-1-1:在开始菜单下的下拉菜单:添加一个退出菜单
        exit = begin.Append(-1, "退出\tCtrl+E",'退出窗口')
        
        #二级菜单的功能绑定
        self.Bind(wx.EVT_MENU, self.OnNew, new)
        self.Bind(wx.EVT_MENU, self.OnExit, exit)

        #2-2:创建一个编辑的菜单
        edit = wx.Menu()
        # 将编辑菜单添加到菜单栏上
        menuBar.Append(edit, "编辑")
        #编辑的二级菜单
        #编辑的二级菜单:剪切
        jianqie= edit.Append(-1, "剪切\tCtrl+S", "内容剪切")
        #编辑的二级菜单:复制
        fuzhi = edit.Append(-1, "复制\tCtrl+C",'内容复制')
        #编辑的二级菜单:粘贴
        zhantie= edit.Append(-1, "粘贴\tCtrl+P", "内容粘贴")
        #编辑的二级菜单:撤销
        chexiao = edit.Append(-1, "撤销\tCtrl+R",'撤销操作')

        #2-3:创建一个关于的菜单
        about = wx.Menu()
        #将关于菜单添加到菜单栏上
        menuBar.Append(about, "关于")
        #二级菜单设置
        # 2-3-1:在开始菜单下的下拉菜单:添加一个更新菜单
        renew= about.Append(-1, "更新\tCtrl+P", "更新软件")
        #about.AppendSeparator() #分隔符
        # 2-3-2:在开始菜单下的下拉菜单:添加一个版本菜单
        vesion = about.Append(-1, "版本\tCtrl+V",'该软件的版本信息')
        # 2-3-3:在开始菜单下的下拉菜单:添加一个个人信息菜单
        #新建一个个人信息菜单,实例化
        meself = wx.Menu()
        #将个人信息菜单,作为亚菜单(子菜单),添加到关于about菜单上
        about.AppendSubMenu(meself,'个人信息')
        #注意数字:100-200-300,只是区分子菜单,防止搞混
        #也可以1-2-3
        address = wx.MenuItem(meself, 1, text="地址", kind=wx.ITEM_NORMAL)
        meself.Append(address)
        xueli = wx.MenuItem(meself, 2, text="学历", kind=wx.ITEM_NORMAL)
        meself.Append(xueli)
        age = wx.MenuItem(meself, 3, text="年龄", kind=wx.ITEM_NORMAL)
        meself.Append(age)

        #挂在菜单
        self.SetMenuBar(menuBar)
        #显示状态栏
        self.CreateStatusBar()
        #显示状态栏的初始文字
        self.SetStatusText("状态栏") #注释掉的话,初始状态栏的文字就是空的

    #弹出对话框
    def OnNew(self, event):
        wx.MessageBox("新建一个新的文件,这是一个弹出框")
    
    #系统退出
    def OnExit(self, event):
        self.Close()
 
if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame()
    frame.Show()
    app.MainLoop()

5 菜单类型kind

===========

5.1 效果图

5.2 代码:#kind = wx.ITEM_RADIO,前面是圆点

#默认#kind = wx.ITEM_NORMAL
#也可以去除
#address = wx.MenuItem(meself, 1, text="地址", kind=wx.ITEM_NORMAL)
address = wx.MenuItem(meself, 1, text="地址")

6 右键单击弹出菜单

===============

6.1 效果图

6.2 代码:


#右键单击菜单

import wx

#右键菜单设置
class MyPopupMenu(wx.Menu):
    def __init__(self,parent):
        super(MyPopupMenu,self).__init__()
        self.parent = parent
        #右键菜单项目:最小化
        mmi = wx.MenuItem(self,-1,'MiniSize')
        self.Append(mmi)
        self.Bind(wx.EVT_MENU, self.OnMinimize, mmi)
        #右键菜单项目:关闭
        cmi = wx.MenuItem(self,-1,'Close')
        self.Append(cmi)
        self.Bind(wx.EVT_MENU, self.OnClose, cmi)
    #最小化
    def OnMinimize(self,e):
        self.parent.Iconize()
    #关闭
    def OnClose(self,e):
        self.parent.Close()


class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, "菜单menu学习-6")
        #第1步:调出菜单栏,实例化
        menuBar = wx.MenuBar()
        #第2步:创建菜单栏上的菜单项目
        #2-1:创建一个开始的菜单
        begin = wx.Menu()
        # 将开始菜单添加到菜单栏上
        menuBar.Append(begin, "开始")
        #二级菜单设置
        # 2-1-1:在开始菜单下的下拉菜单:添加一个新建菜单
        new= begin.Append(-1, "新建\tCtrl+N", "新建一个文件")
        # 2-1-1:在开始菜单下的下拉菜单:添加一个退出菜单
        exit = begin.Append(-1, "退出\tCtrl+E",'退出窗口')

        #二级菜单的功能绑定
        self.Bind(wx.EVT_MENU, self.OnNew, new)
        self.Bind(wx.EVT_MENU, self.OnExit, exit)
        #2-2:创建一个编辑的菜单
        edit = wx.Menu()
        # 将编辑菜单添加到菜单栏上
        menuBar.Append(edit, "编辑")

        #编辑的二级菜单
        #编辑的二级菜单:剪切
        jianqie= edit.Append(-1, "剪切\tCtrl+S", "内容剪切",kind = wx.ITEM_RADIO)
        #编辑的二级菜单:复制
        fuzhi = edit.Append(-1, "复制\tCtrl+C",'内容复制')
        #编辑的二级菜单:粘贴
        zhantie= edit.Append(-1, "粘贴\tCtrl+P", "内容粘贴")
        #编辑的二级菜单:撤销
        chexiao = edit.Append(-1, "撤销\tCtrl+R",'撤销操作')

        #2-3:创建一个关于的菜单
        about = wx.Menu()
        #将关于菜单添加到菜单栏上
        menuBar.Append(about, "关于")
        #二级菜单设置
        # 2-3-1:在开始菜单下的下拉菜单:添加一个更新菜单
        renew= about.Append(-1, "更新\tCtrl+P", "更新软件")
        # 2-3-2:在开始菜单下的下拉菜单:添加一个版本菜单
        vesion = about.Append(-1, "版本\tCtrl+V",'该软件的版本信息')
        # 2-3-3:在开始菜单下的下拉菜单:添加一个个人信息菜单
        #新建一个个人信息菜单,实例化
        meself = wx.Menu()
        #将个人信息菜单,作为亚菜单(子菜单),添加到关于about菜单上
        about.AppendSubMenu(meself,'个人信息')
        address = wx.MenuItem(meself, 1, text="地址")
        meself.Append(address)
        xueli = wx.MenuItem(meself, 2, text="学历", kind=wx.ITEM_NORMAL)
        meself.Append(xueli)
        age = wx.MenuItem(meself, 3, text="年龄", kind=wx.ITEM_NORMAL)
        meself.Append(age)

        #挂在菜单
        self.SetMenuBar(menuBar)
        #显示状态栏
        self.CreateStatusBar()
        #显示状态栏的初始文字
        self.SetStatusText("状态栏") #注释掉的话,初始状态栏的文字就是空的
        #绑定右键菜单,调出函数
        self.Bind(wx.EVT_RIGHT_DOWN, self.OnRightDown)

    #弹出对话框
    def OnNew(self, event):
        wx.MessageBox("新建一个新的文件,这是一个弹出框")
    
    #系统退出
    def OnExit(self, event):
        self.Close()
    
    #右键菜单
    def OnRightDown(self,e):
        self.PopupMenu(MyPopupMenu(self),e.GetPosition())
 
if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame()
    frame.Show()
    app.MainLoop()

wxpython的菜单设置基本完成。

可能会有菜单的图标设置,这个本机是deepin-linux操作系统,我失败了,就不放上上面了,其实很简单。

Tags:

最近发表
标签列表