简介
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()
启动后效果如下图