美文网首页WxPython -- 个人笔记
WxPython -- 第四篇 -- 为窗口添加菜单栏与状态栏

WxPython -- 第四篇 -- 为窗口添加菜单栏与状态栏

作者: MangfuStudio | 来源:发表于2018-12-12 15:06 被阅读0次

    第三篇文章中,们使用wx.TextCtrl()添加了一个文本输入控件。
    但只有一个文本输入框的程序是简陋和不完整,现在!是时候开始拓展我们的程序。

    拓展1:添加菜单栏

    输入框有了,现在让我们来添加一个菜单,用于添加一个保存功能。

    import wx
    
    class MainWindow(wx.Frame):
        def __init__(self, parent, title, size=(400,200)):
            wx.Frame.__init__(self, parent=parent, title=title, size=size)
            self.textControl = wx.TextCtrl(self, style=wx.TE_MULTILINE)
    
            # 这是新内容
            # 新内容添加了菜单栏
            file_menu = wx.Menu()
            file_menu.Append(wx.ID_SAVE, '保存', '将会保存输入框中的内容')
            window_menu = wx.MenuBar()
            window_menu.Append(file_menu, '文件')
            self.SetMenuBar(window_menu)
    
            self.Show(True)
    
    app = wx.App()
    window = MainWindow(None, '文本编辑器')
    app.MainLoop()
    
    现在我们进入源码解读环节:
    在解读代码前,先研究一张图片

    代码看不懂,图片也看不懂,没什么关系,我们先来解读代码中的新内容(也就是添加菜单栏的代码)。

    file_menu = wx.Menu()
    解读:WxPython 中使用wx.Menu()类来表示一个菜单。不知道菜单什么?看下图

    file_menu.Append(wx.ID_SAVE, '保存', '将会保存输入框中的内容')
    解读:此方法用于向菜单中添加一个选项
    参数(wx.ID_SAVE):这是wxWidgets提供的标准事件ID,我们实现的是保存功能,所以使用了ID_SAVE,如果你需要了解更多的标准ID,请访问 事件ID列表
    参数(保存):显示到选项上的文本
    最后一个参数:当鼠标选择此选项时显示到窗口状态栏中的文本(状态栏待会会讲到,很简单的一个东西)
    小提示:调用一次 Append() 添加一个菜单选项,调用多次可添加多个菜单选项

    window_menu = wx.MenuBar()
    解读:Wxpython中使用wx.MenuBar()类来表示一个菜单栏(注意不是菜单哦),不知道菜单栏是什么?看下图

    window_menu.Append(file_menu, '文件')
    解读:此方法把菜单添加到菜单栏中
    参数(file_menu):使用wx.Menu()创建的菜单
    参数(文件):可以理解为菜单的名字,会显示到菜单栏中。
    小提示:调用一次 Append() 把一个菜单添加到菜单栏,调用多次可添加多个菜单

    self.SetMenuBar(window_menu)
    解读:把创建好的菜单栏添加到窗口上(如果你忘了这一步,你的菜单栏将不会显示到窗口,所以要此步骤要牢记)
    参数(window_menu):使用wx.MenuBar()创建的菜单栏

    OK! 现在我们再回顾下开始时给出的关系图,相信你已经可以理解WxPython中菜单的创建方式了:
    1. 菜单被菜单栏包裹:wx.Menu() -> wx.MenuBar()
    2. 菜单栏被窗口包裹:wx.MenuBar() -> MainWindow()
    菜单已经创建,让我们来验收下劳动成果吧:

    拓展2:添加窗口状态栏

    还记得我说的 file_menu.Append(wx.ID_SAVE, '保存', '将会保存输入框中的内容')这个方法的第三个参数将会显示到窗口状态栏中吗?,现在我们来实验下。

    创建窗口状态栏使用 CreateStatusBar() 方法

    在菜单代码后面继续编写(在菜单代码前编写也是可以的,但有一个原则,不要在self.Show()后编写任何窗口代码,因为Show()方法后的代码不会奏效)

    # 这是新内容
    # 新内容添加了状态栏
    file_menu = wx.Menu()
    file_menu.Append(wx.ID_SAVE, '保存', '将会保存输入框中的内容')
    window_menu = wx.MenuBar()
    window_menu.Append(file_menu, '文件')
    self.SetMenuBar(window_menu)
    
    # 创建状态栏
    self.CreateStatusBar()
    
    self.Show(True)
    
    完成!现在我们再次运行程序:

    以上就是今天的内容

    下一篇 在点击保存后如何保存我们文本框中的内容(也就是事件处理)



    相关文章

      网友评论

        本文标题:WxPython -- 第四篇 -- 为窗口添加菜单栏与状态栏

        本文链接:https://www.haomeiwen.com/subject/bpsuhqtx.html