Python图形用户界面(GUI)编程之wxPython入门

        图形用户界面主要是方便用户操作,Python开源的GUI类库还是蛮多的,这里介绍一款在Python语言中的一套优秀的GUI图形库,而且是跨平台的,现今支持的平台有:32/64位微软Windows操作系统、大多数Unix或类Unix系统、苹果Mac OS X。

安装很简单,最好指定国内镜像地址,下载速度非常快,这也是我建议任何使用pip下载的时候,都最好指定镜像站点,所以不建议 pip install -U wxPython 这样直接安装,因为国内访问国外站点速度比较慢,尤其下载的东西比较大的时候。

pip install -U wxPython -i http://pypi.douban.com/simple/  --trusted-host pypi.douban.com

 其中这里的-U就是升级的意思 --upgrade,如果已有安装那就升级到最新版

第一个GUI

安装好了之后,我们来创建一个最简单的用户界面,四条代码即可搞定,代码如下:

# 导入wxPython包
import wx

# 创建一个实例对象
app = wx.App()
# 创建窗口,设置标题
frm = wx.Frame(None, title="寅恪光潜")
# 显示
frm.Show()
# 启动主循环
app.MainLoop()

是不是很简单,导入wx包,然后创建窗口,显示出来即可。

其中的主循环的意思就是一直循环,接收用户的输入,比如点击了关闭按钮,界面就退出等

GUI填充内容

上面的骨架搭建好了,我们让它变得有血有肉,成为血肉之躯哈哈。
现在我们在这个界面里面增加一些内容,比如增加菜单栏、状态栏显示以及设置字体大小,颜色等等以及与界面有交互操作

import wx

class MyFrame(wx.Frame):
    def __init__(self, *args, **kw):
        super(MyFrame, self).__init__(*args, **kw)

        # 在窗口里面创建控制面板
        pnl = wx.Panel(self)

        # 面板里设置文本并设置字体相关
        st = wx.StaticText(pnl, label="你好,寅恪光潜!")
        font = st.GetFont()
        font.PointSize += 10
        font = font.Bold()
        st.SetFont(font)

        # BoxSizer来管理小部件的布局
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(st, wx.SizerFlags().Border(wx.TOP | wx.LEFT, 25))
        pnl.SetSizer(sizer)

        # 调用下面创建菜单栏的方法
        self.makeMenuBar()

        self.CreateStatusBar()
        self.SetStatusText("这里是状态栏信息")

    def makeMenuBar(self):
        # 菜单项
        fileMenu = wx.Menu()

        helloItem = fileMenu.Append(-1, "&点我\tCtrl-H", "状态栏的帮助信息")
        fileMenu.AppendSeparator()
        # 库存ID,可以不指定标签,这里是Quit退出
        exitItem = fileMenu.Append(wx.ID_EXIT)

        helpMenu = wx.Menu()
        aboutItem = helpMenu.Append(wx.ID_ABOUT)

        # 菜单栏
        menuBar = wx.MenuBar()
        menuBar.Append(fileMenu, "&文件")
        menuBar.Append(helpMenu, "&帮助")

        # 框架显示菜单栏
        self.SetMenuBar(menuBar)

        # 菜单绑定事件
        self.Bind(wx.EVT_MENU, self.OnHello, helloItem)
        self.Bind(wx.EVT_MENU, self.OnExit,  exitItem)
        self.Bind(wx.EVT_MENU, self.OnAbout, aboutItem)

    def OnExit(self, event):
        self.Close(True)

    def OnHello(self, event):
        wx.MessageBox("再点我,就把你吃掉")

    def OnAbout(self, event):
        wx.MessageBox("这是我们创建的第一个真正意义上的GUI程序","帮助",wx.OK | wx.ICON_INFORMATION)

if __name__ == '__main__':
    app = wx.App()
    frm = MyFrame(None, title='这里是标题')
    frm.Show()
    app.MainLoop()

 

这里主要是针对框架在里面增加面板,然后往里面添加东西,并创建了菜单栏,里面有菜单项,然后通过self.Bind()方法去绑定菜单项与事件,这样点击菜单项就出现相对应的动作来处理。
不过从这里我们可以看到,为了在里面增加一些东西,需要写很多代码之外,也不直观,最好是有一种其他语言一样可以直接拖拽与编辑的界面,接下来的一篇就是为此准备的。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寅恪光潜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值