Dotcpp  >  编程教程  >  PythonGUI编程  >  wxPython(6)-下拉列表和菜单

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()

运行结果如下图:

wxpython15             wxpython16

我们可以看出两种列表的不同之处,选择使用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. 菜单

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

        wxpython17

        wxpython18    

        wxpython19

点击其中一个菜单项还有多个选项供我们选择,下面我们来学习使用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()

运行结果如下:

wxpython20



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

上一课:

wxPython(5)-事件管理

下一课:

综合案例

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Python教程
第一章 Python入门
第二章 Python基础语法
第三章 Python入门语法
第四章 Python核心语法
第五章 Python函数
第六章 Python面向对象编程
第七章 Python模块
第八章 Python异常处理和程序调试
第九章 Python文件及目录操作
第十章 PythonGUI编程
第十一章 Python进程和线程
第十二章 Python数据库管理
第十三章 Python算法
第十四章 Python爬虫
第十五章 Python实战项目
第十六章 后记
Dotcpp在线编译      (登录可减少运行等待时间)