wxPython GUI框架学习使用

简介

wxPython是Python语言的跨平台GUI工具包。使用wxPython用Python窗口程序,可以在Windows,Mac和Linux或其他类似Unix的系统上只需很少修改即可运行。

安装

pip install wxPython

Demo

1. 创建一个最小的wxPython程序

# 导入wxPython包
import wx

# 创建一个程序对象
app = wx.App()
# 创建一个框架,第一个参数是必须的可以为 None
frame = wx.Frame(None, title="Hello World")
# 设置为展示
frame.Show()
# 启动事件循环
app.MainLoop()

带上导入的wxPython包也只需要5行代码即可,非常简单

效果如下图:

  • frame.Show(False): 使窗口可见
  • frame.Show(True): True是默认值,使窗口可见
  • frame.Hide(): 等同于frame.Show(False)

2. 通过继承wx.App的子类创建wxPython程序

class App(wx.App):

    def OnInit(self):
        self.frame = wx.Frame(parent=None, title='Demo2')
        self.frame.Show()
        return True

app = App()
app.MainLoop()

效果如下图:

  • 通过这种方式创建程序可以不需要我们再写创建frame框架的代码,frame框架已经在Oninit函数中创建好了

注:在Python中,如果我们没有给类定义__init__()方法,那么这个类的父方法wx.App.__init__()将在对象创建时自动被调用。如果自己定义了__init__()方法,那么就需要调用父类的__init__()方法。否则wxPython不会被初始化,并且OnInit()方法也得不到调用

3. 通过继承wx.Frame类的子类创建wxPython程序

import wx


class Frame(wx.Frame):
    """
    改变创建frame对象的创建方法。定义自己的Frame类为wx.Frame的子类,
    可以方便后期在自己的框架中添加显示文本,按钮、菜单
    """
    pass


class App(wx.App):

    def OnInit(self):
        self.frame = Frame(parent=None, title='Demo2')
        self.frame.Show()
        # 将创建的Frame框架设置为主要的置顶显示
        self.SetTopWindow(self.frame)
        return True
    
    
if __name__ == '__main__':
    app = App()
    app.MainLoop()

4.创建一个展示指定图片的wxPython程序

import wx


class Frame(wx.Frame):
    def __init__(self, image: wx.Image, parent=None, id=-1,
                 pos=wx.DefaultPosition,
                 title='Hello wxPython!'):

        # 显示图形
        temp = image.ConvertToBitmap()
        # 将窗口的宽高设置为何图片的保持一致
        size = temp.GetWidth(), temp.GetHeight()
        # 传入Frame类初始化参数
        wx.Frame.__init__(self, parent, id, title, pos, size)
        # 设置图片显示
        self.bmp = wx.StaticBitmap(parent=self, bitmap=temp)


class App(wx.App):

    def OnInit(self):
        # 处理图像,这里可以根据选择的图片格式不同,选择不同的TYPE
        image = wx.Image('640.gif', wx.BITMAP_TYPE_GIF)
        self.frame = Frame(image)
        self.frame.Show()
        # 置顶窗口
        self.SetTopWindow(self.frame)
        return True


if __name__ == '__main__':
    app = App()
    app.MainLoop()

启动后效果如下图

YdIQ9x.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值