wxPython(6)-下拉列表和菜单

点击打开在线编译器,边学边练

    1. 下拉列表

        下拉列表是由一个文本框和一个列表组成的,它有两种方法可以使用,一种是wx.ComboBox,一种是wx.Choice,前者的文本框是可变的,而后者的是固定的。

        我们直接通过例子来看一下:

import wx
class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self, None, -1, "下拉列表", size=(300, 300))
        self.Centre()
        panel = wx.Panel(self)#创建一个容器
        box_one = wx.BoxSizer(wx.HORIZONTAL)
        text_one = wx.StaticText(panel,label='你喜欢的运动为:')
        sports = ['篮球','足球','排球']
        select_one = wx.ComboBox(panel,-1,value = '足球',choices = sports,style = wx.CB_SORT)
              box_one.Add(text_one,1,flag=wx.LEFT|wx.RIGHT|wx.FIXED_MINSIZE,border = 7)
        box_one.Add(select_one,1,flag = wx.ALL|wx.FIXED_MINSIZE)
        box_two = wx.BoxSizer(wx.HORIZONTAL)
        text_two = wx.StaticText(panel,label='你喜欢的手机品牌为:')
        phones = ['小米','华为','苹果']
        select_two = wx.Choice(panel,-1,choices = phones,style = wx.CB_SORT)
        box_two.Add(text_two,1,flag=wx.LEFT|wx.RIGHT|wx.FIXED_MINSIZE,border = 7)
        box_two.Add(select_two,1,flag = wx.ALL|wx.FIXED_MINSIZE)
        bbox = wx.BoxSizer(wx.VERTICAL)
        bbox.Add(box_one,1,flag = wx.ALL|wx.EXPAND,border = 7)
        bbox.Add(box_two, 1, flag=wx.ALL | wx.EXPAND, border=7)
        panel.SetSizer(bbox)
if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame()
    frame.Show()
    app.MainLoop()

        运行结果如下图:

             

        我们可以看出两种列表的不同之处,选择使用wx.Choice的时候,选择框中的内容是固定的,只有从列表中选择,而使用wx.ComboBox的时候选择框中的内容不是固定的,关键语句:

select_one = wx.ComboBox(panel, -1, value='足球', choices=sports, style=wx.CB_SORT)
select_two = wx.Choice(panel, -1, choices=phones, style=wx.CB_SORT)

    2. 菜单

        我们可以发现在日常生活中使用的大多图形用户界面都是有菜单项的,如下面的几张图:

        

            

        

        点击其中一个菜单项还有多个选项供我们选择,下面我们来学习使用wxPython中的功能来实现菜单栏。

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

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

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

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

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

        6) 把菜单栏设置为界面的菜单栏:self.SetMenuBar(menuBar)

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

        代码如下:

import wx
class MyFrame(wx.Frame):
    def __init__(self):
        super().__init__(parent=None, title="wxPython", size=(400, 300))
        self.Center()
        self.text = wx.TextCtrl(self, -1, style=wx.TE_MULTILINE)
        vbox = wx.BoxSizer(wx.VERTICAL)
        self.SetSizer(vbox)
        vbox.Add(self.text, 1, flag=wx.EXPAND | wx.ALL, border=1)
        menubar = wx.MenuBar()#对应步骤1
        self.SetMenuBar(menubar)
        file_menu = wx.Menu()#对应步骤2
        menubar.Append(file_menu, '菜单')#对应步骤4
        file_menu.Append(id=wx.ID_NEW, item='新建', helpString='new file')
        file_menu.AppendSeparator()
        edit_menu = wx.Menu()
        file_menu.AppendSubMenu(edit_menu, "编辑")
        copy_item = wx.MenuItem(edit_menu, 100, text="复制", kind=wx.ITEM_NORMAL)#对应步骤3
        edit_menu.Append(copy_item)
        cut_item = wx.MenuItem(edit_menu, 101, text="剪切", kind=wx.ITEM_NORMAL)
        edit_menu.Append(cut_item)
        paste_item = wx.MenuItem(edit_menu, 102, text="粘贴", kind=wx.ITEM_NORMAL)
        edit_menu.Append(paste_item)
if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame()
    frame.Show()
    app.MainLoop()

        运行结果如下:

批注 2020-03-23 203129.png


本文固定URL:https://www.dotcpp.com/course/296

上一课:wxPython(5)-事件管理 下一课:综合案例
第一章 人生苦短,我用Python
第二章 Python基础语法
第三章 Python入门语法
第四章 Python核心语法
第五章 函数
第六章 面向对象编程
第七章 模块
第八章 异常处理和程序调试
第九章 文件及目录操作
第十章 GUI编程
第十一章 进程和线程
第十二章 数据库管理
第十三章 算法
第十四章 爬虫
第十五章 实战篇
第十六章 后记
Dotcpp在线编译      (登录可减少运行等待时间)