wx.python菜单栏GUI设计

主要包含两部分,一部分是菜单栏内容添加,包含子菜单,另一部分是绑定事件。

菜单栏添加

菜单栏的添加遵循一个原则,先创建菜单,再创建子菜单项,最后再将子菜单项加入到菜单中

值得注意的是 图片大小的改变(重点标注)

image = wx.Image(r'pic1.png', wx.BITMAP_TYPE_PNG)
# print('图片的尺寸为{0}x{1}'.format(image.GetWidth(),image.GetHeight()))
portion = 0.15
w = image.GetWidth() * portion
h = image.GetHeight() * portion
image.Rescale(w, h)
mypic = image.ConvertToBitmap()
# 创建 新建 菜单项
self.new = wx.MenuItem(fileMenu, wx.ID_NEW, '&新建\tCtrl+N')
self.new.SetBitmap(mypic)
菜单事件绑定

依然用到的是Bind,这里第一个参数为wx.EVT_MENU

代码
import wx.grid
import os
class Example(wx.Frame):
    """创建一个view菜单,它包括两个 Check 菜单项,这两个菜单项可以控制显示或隐藏状态栏和工具栏"""
    def __init__(self):
        wx.Frame.__init__(self, None, -1,  size=(350, 300))
        self.InitUI()
        self.Show()

    def InitUI(self):
        menubar = wx.MenuBar()
        # 文件菜单栏
        fileMenu = wx.Menu()
        image = wx.Image(r'pic1.png', wx.BITMAP_TYPE_PNG)
        # print('图片的尺寸为{0}x{1}'.format(image.GetWidth(),image.GetHeight()))
        portion = 0.15
        w = image.GetWidth() * portion
        h = image.GetHeight() * portion
        image.Rescale(w, h)
        # print('图片的尺寸为{0}x{1}'.format(image.GetWidth(), image.GetHeight()))
        mypic = image.ConvertToBitmap()
        # 创建 新建 菜单项
        self.new = wx.MenuItem(fileMenu, wx.ID_NEW, '&新建\tCtrl+N')
        self.new.SetBitmap(mypic)
        fileMenu.Append(self.new)
        # 创建 打开 菜单项
        self.open = wx.MenuItem(fileMenu, wx.ID_OPEN, '&打开\tCtrl+O')
        self.open.SetBitmap(mypic)
        fileMenu.Append(self.open)
        self.Bind(wx.EVT_MENU,self.OpenPdf,self.open)
        # 创建 保存 菜单项
        self.save = wx.MenuItem(fileMenu, wx.ID_SAVE, '&保存\tCtrl+S')
        self.save.SetBitmap(mypic)
        fileMenu.Append(self.save)
        # 视图菜单栏
        viewMenu = wx.Menu()
        self.more = wx.MenuItem(viewMenu, wx.ID_ANY, '&更多...')
        self.quit = wx.MenuItem(viewMenu, wx.ID_EXIT, '&退出\tCtrl+T')
        self.Bind(wx.EVT_MENU, self.OnQuit, self.quit)
        # 当应用开始的时候,状态栏和工具栏都应可见,所以使用 Check() 方法勾选 Check 菜单项
        viewMenu.Append(self.more)
        viewMenu.Append(self.quit)
        menubar.Append(fileMenu, '&文件')
        menubar.Append(viewMenu, '&帮助')
        self.SetMenuBar(menubar)
        self.toolbar = self.CreateToolBar()

        self.SetSize((350, 250))
        self.SetTitle('Check菜单项')
        self.Centre()
        self.Show(True)

    def OpenPdf(self, event):
        wildcard = 'All files(*.*)|*.*'
        dialog = wx.FileDialog(None, 'select', os.getcwd(), '', wildcard, wx.FD_OPEN)
        if dialog.ShowModal() == wx.ID_OK:
            self.pathname = dialog.GetPath()
            dialog.Destroy
    def OnQuit(self, event):
        self.Close()
if __name__ == '__main__':
    app = wx.App()
    frame = Example()
    frame.Show()
    app.MainLoop()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值