Python GUI编程:wxPython模块之下拉列表和菜单

2022-08-0423:01:30编程语言入门到精通Comments710 views字数 3145阅读模式

  1. 下拉列表文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26586.html

下拉列表是由一个文本框和一个列表组成的,它有两种方法可以使用,一种是wx.ComboBox,一种是wx.Choice,前者的文本框是可变的,而后者的是固定的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26586.html

我们直接通过例子来看一下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26586.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import wx
class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(selfNone-1"下拉列表", size=(300300))
        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()

运行结果如下图:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26586.html

Python GUI编程:wxPython模块之下拉列表和菜单             Python GUI编程:wxPython模块之下拉列表和菜单文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26586.html

我们可以看出两种列表的不同之处,选择使用wx.Choice的时候,选择框中的内容是固定的,只有从列表中选择,而使用wx.ComboBox的时候选择框中的内容不是固定的,关键语句:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26586.html

1
2
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. 菜单文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26586.html

我们可以发现在日常生活中使用的大多图形用户界面都是有菜单项的,如下面的几张图:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26586.html

Python GUI编程:wxPython模块之下拉列表和菜单文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26586.html

Python GUI编程:wxPython模块之下拉列表和菜单文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26586.html

Python GUI编程:wxPython模块之下拉列表和菜单文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26586.html

点击其中一个菜单项还有多个选项供我们选择,下面我们来学习使用wxPython中的功能来实现菜单栏。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26586.html

1) 创建一个菜单栏:menuBar = wx.MenuBar()。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26586.html

2) 创建菜单: fileMenu = wx.Menu()文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26586.html

3) 创建菜单项: newItem = wx.MenuItem()文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26586.html

4) 添加菜单项到菜单中: fileMenu.AppendItem(newItem)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26586.html

5) 添加菜单到菜单栏:menuBar.Append(fileMenu, title = "File")文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26586.html

6) 把菜单栏设置为界面的菜单栏:self.SetMenuBar(menuBar)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26586.html

7) 绑定菜单事件:self.Bind(wx.EVT_MENT, self.menuHandler)文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26586.html

代码如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26586.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import wx
class MyFrame(wx.Frame):
    def __init__(self):
        super().__init__(parent=None, title="wxPython", size=(400300))
        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()

运行结果如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26586.html

Python GUI编程:wxPython模块之下拉列表和菜单文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26586.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/26586.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定