Python-GUI-wxpython简介

1 GUI(Graphical User Interface)

    图形用户界面

1.1 创建应用程序

两个基本对象

  • 应用程序对象:管理主事件循坏,是wxpython的动力,如果没有,wxpython将不能执行
  • 顶级窗口对象:用于管理最重要的数据,控制并呈现给客户

1.1.1 创建一个wx.App的子类

  • 定义这个子类
  • 在定义的子类中写一个OnInit()初始化方法
  • 在程序的主要部分创建这个类的一个实例
  • 调用应用程序的MainLoop()方法。这个方法将程序的控制权转交给wxpython
'''
定义了一个子类App,定义了父类wx.App,子类中包含了一个初始化方法OnInit(),在主程序中创建类的实例,然后调用MainLoop()主循环方法。
'''
import wx #导入模块
class App(wx.App):     #定义App类,继承wx.App父类
    def OnInit(self):  #定义一个初始化方法
        frame = wx.Frame(parent=None,title = 'Hello wxpython') #创建窗口
        frame.Show()                      #显示窗口
        return True         # 返回值
if __name__ == '__main__':
    app = App()            #创建App类的实例
    app.MainLoop()         #创建App类的MainLoop()主循坏方法
        

1.1.2 直接使用wx.App

如果系统中只有一个窗口的话,可以不创建wx.App子类,直接使用wx.App,这个类提供一个最基本的OnInit()初始化方法

import wx
app = wx.App()  #初始化wx.App类
frame = wx.Frame(parent=None,title = 'Hello wxpython') #定义一个顶级窗口
frame.Show() #显示窗口
app.MainLoop() #调用wx.App的MainLoop方法

1.1.3 使用wx.Frame框架

在GUI中框架就是窗口,也是一个容器,用户可以将它在屏幕上任意移动,包含标题栏和菜单、等wxpython中,wx.Frame是所有框架的父类,当你创建wx.Frame的子类时,子类应该调用父类
的构造器wx.Frame.init()
wx.Frame.init()构造器语法格式如下:

wx.Frame(parent,id=-1,title="",pos=wx.DefaultPostion,size=wx.DefaultSize,style=wx.Defult_Frame_Style,name = "frame")

  • parent:框架父窗口,如果是顶级,就是None
  • id:新窗口的wxpython ID,通常设定成-1
  • title:窗口的标题
  • pos:窗口的位置
  • size:窗口的大小
  • style:指定窗口的类型的常量
  • name:框架内在的名字,可以使用它来寻找窗口
import wx
class MyFrame(wx.Frame):
    def __init__(self,parent,id):
        wx.Frame.__init__(self,parent= None,id= -1,title= "",pos=(),size=(),style="",name="")
if __name__ == "__main__":
    app = wx.App()
    frame = MyFrame(None,-1)
    frame.Show()
    app.MainLoop()

1.1.4 常用控件

1.1.4.1 静态文本
wx.StaticText(paerent,id,label,pos,size,style,name="")
  • parent:父窗口部件
  • id:标识符,使用-1可以自动创建一个唯一的标识符
  • label:现在在控件中的文本内容
  • pos:位置
  • size:大小
  • style:标记样式
  • name:对象的名字
1.1.4.2 创建面板
panel = wx.Panel(self)

创建面板,并将panel作为父类,然后将组件放入窗体中。

1.1.4.3 设置字体

通过wx.Font类设置字体

font = wx.Font(pointsize,family,style,weight,underline=False,faceName="",encoding="")
  • pointSize:字体的整数尺寸,单位为磅
  • family:
  • style:倾斜
  • weight:指定字体的醒目程度
  • faceName:指定字体名
  • encoding;编码方式
title.SetFont(font)
1.1.4.4 输入文本类
text = wx.TextCtrl(parent,id,value="",pos=(),size=(),style=0,validator="",name="")

参数说明:

  • style:单行wx.TextCtrl的样式
  • wx.TE_CENTER:文本居中
  • wx.TE_LEFT:文本左对齐
  • wx.TE_NOHIDESEL : 文本始终高亮显示,只适用于windows
  • wx.TE_PASSWORD : 不显示键入的文本
  • value:显示在文本控件中的默认值
  • validator:常用于过滤数据以确保只能键入要接受的数据
1.1.4.5 按钮控件
the_button = wx.Button(parent,id,label,pos,size=wxDefaultSize,style=0,validator,name="button")

the_button是一个对象,实例化wx.Button类得到的
1.1.4.5 绑定事件
the_button.Bind(wx.EVT_BUTTON,OnClickSubmit)

参数说明:

  • wx.EVT_BUTTON:按钮事件类型
  • wx.EVT_MOTION:用户移动鼠标事件
  • OnClickSubmit:方法名
1.1.4.6 弹出框
wx.MessageBox(value) #value就是需要弹出的内容
1.1.4.7 BoxSizer布局
sizer = wx.BoxSizer(wx.VERTIVAL)
  • wx.VERTIVAL

  • wx.HORIZONTAL
    创建一个wx.BoxSizer对象,命名为sizer,带有一个决定是水平或者垂直的参数,默认是水平

    然后使用Add()方法将控件加入sizer,使用面板的SetSizer()方法设定它的尺寸器

sizer.Add(control,proportion,flag,border)

参数说明:

  • control :要添加的控件
  • proportion:
  • flag:
  • boder:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

kobe_OKOK_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值