python wxpython plt_学Python划重点 四 (图形界面wxPython 库的使用)

本文详细介绍了Python中的图形界面库wxPython的使用,包括wx.Frame的构造、窗体布局管理(如BoxSizer、StaticBoxSizer、GridSizer、FlexGridSizer)以及常见控件(如StaticText、Button、TextCtrl、CheckBox、RadioButton、ComboBox、ListBox、StaticBitmap和Grid)的使用方法,同时展示了如何创建和管理复杂的窗口布局。文章还涵盖了事件处理和分隔窗口的使用,是学习wxPython GUI编程的实用教程。
摘要由CSDN通过智能技术生成

构建一个最简单的wxPython 程序至少需要一个wx.App 对象和一个wx.Frame 对象。

模板:

import wx # 加载模块

# 继承窗体类

class MyFrame(wx.Frame):

def __init__(self):

# 初始化父类

super().__init__(parent=None,title="第一个窗体程序!",size=(500,200))

self.Center() #  设置窗口居中

# 这里可以添加自己的设计代码

# ·······

# 这里可以添加自己的设计代码

# wx.App 对象代表当前应用程序

class App(wx.App):

def  OnInit(self):

myFrame=MyFrame()  # 创建窗体实例

myFrame.Show() #  显示窗口

return True

def OnExit(self):

print(' 应用程序退出')

return 0

if __name__ =="__main__":

app=App()  #  创建应用程序对象

app.MainLoop() #  进入主事件循环

一、wx.Frame类介绍:

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

parent : 框架的父窗口。对于顶级窗口,这个值是None 。 id : 关于新窗口的wxPython ID 号。可以明确地传递一个 值。如果 传递-1 ,wxPython 自动生成一个新的ID 。 title : 窗口的标题。 pos : 一个wx.Point 对象,它指定这个新窗口的左上角在屏幕中的位置。 size : 一个wx.Size 对象,它指定这个窗口的初始尺寸。(-1,-1) 将让系统决定窗口的初始尺寸。 style: 指定窗口的类型的常量。可以使用或运算来组合它们。 name : 框架的内在的名字。以后可以使用它来寻找这个窗口。

二、窗体布局

wxPython 提供了8 个布局管理器类,包括wx.Sizer 、wx.BoxSizer 、wx.StaticBoxSizer 、wx.WrapSizer 、wx.StdDialogButtonSizer 、wx.GridSizer 、wx.FlexGridSizer 、wx.GridBagSizer。

其中wx.Sizer 是布局管理器的根类, 一般不会直接使用wx.Sizer ,而是使用它的子类 ,最常用的有:wx.BoxSizer 、wx.StaticBoxSizer 、wx.GridSizer 和wx.FlexGridSizer 。

1. Box 布局

Box 布局类是wx.BoxSizer ,Box 布局是所有布局中最常用的,它可以让其中的子窗口(或控件)沿垂直或水平方向布局,创建wx.BoxSizer 对象时可以指定布局方向。

当需要添加子窗口(或控件)到父窗口时,需要调用wx.BoxSizer 对象Add() 方法,Add() 方法是从父类wx.Sizer 继承而来的,Add() 方法的语法说明如下: Add(window, proportion=0, flag=0, border=0, userData=None)

Add(sizer, proportion=0, flag=0, border=0,userData=None)

Add(size, proportion=0, flag=0, border=0, userData=None)

其中proportion 参数仅被wx.BoxSizer 使用,用来设置当前子窗口(或控件)在父窗口所占空间比例 ,proportion=0 表示保持本身大小;flag 是参数标志,用来控制对齐、边框和调整尺寸;border 参数用来设置边框的宽度;userData参数可被用来传递额外的数据。

flag标志: 对齐

边框

尺寸

2. StaticBox 布局

StaticBox 布局类是wx.StaticBoxSizer ,继承于wx.BoxSizer 。StaticBox 布局等同于Box ,只是在Box 周围多了一个附加的带静态文本的边框。

3. Grid 布局

Grid 布局类是wx.GridSizer ,Grid 布局以网格形式对子窗口(或控件)进行摆放,容器被分成大小相等的矩形,一个矩形中放置一个子窗口(或控件)。

四种构造方法: wx.GridSizer(rows, cols, vgap, hgap) : 创建指定行数和列数的wx.GridSizer 对象,并指定水平和垂直间隙,参数hgap 是水平间隙,参数vgap 是垂直间隙。添加的子窗口(或控件)个数超过rows 与cols之积,则引发异常。

wx.GridSizer(rows, cols, gap) : 同wx.GridSizer(rows, cols,vgap, hgap) ,gap 参数指定垂直间隙和水平间隙,gap 参数是wx.Size 类型,例如wx.Size(2, 3) 是设置水平间隙为2 像素,垂直间隙为3 像素。

wx.GridSizer(cols, vgap, hgap) : 创建指定列数的wx.GridSizer 对象,并指定水平和垂直间隙。由于没有限定行数,所以添加的子窗口(或控件)个数没有限制。

wx.GridSizer(cols, gap=wx.Size(0, 0)) : wx.GridSizer(cols,vgap, hgap) ,gap 参数指定垂直间隙和水平间隙,gap 参数是wx.Size类型。

import wx

class MyFrame(wx.Frame):

def __init__(self):

super().__init__(parent=None,title="Grid布局",size=(300,300))

self.Center()

panel=wx.Panel(self)

grid= wx.GridSizer(3,3,1,1)

for i in range(9):

item=wx.Button(parent=panel,id=-1,label=str(i+1))

grid.Add(item,1,flag=wx.EXPAND)

panel.SetSizer(grid) # 设置布局

class App(wx.App):

def OnInit(self):

frame=MyFrame()

frame.Show()

return True

if __name__=="__main__":

app=App()

app.MainLoop()

4. FlexGrid 布局

Grid 布局时网格大小是固定的,如果想网格大小不同可以使用FlexGrid。 FlexGrid 布局类是wx.FlexGridSizer ,它的父类是wx.GridSizer 。

wx.FlexGridSizer 的构造方法与wx.GridSizer

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值