wxPython的Core组件

之所以被称为核心组件,我想是因为这个组件集包含了GUI的事件,布局等重要的功能组件。

 

1、事件驱动编程:

wxPython应用程序通过将特定类型的事件和特定的一块代码相关联来工作,该代码在响应事件时执行。
事件被映射到代码的过程称为事件处理。

事件(event):在你的应用程序期间发生的事情,它要求有一个响应。---代码

事件对象(event object):在wxPython中,它具体代表一个事件,其中包括了事件的数据等属性。它是类wx.Event或其子类的实例,子类如wx.CommandEvent和wx.MouseEvent。

事件类型(event type):wxPython分配给每个事件对象的一个整数ID。事件类型给出了关于该事件本身更多的信息。例如,wx.MouseEvent的事件类型标识了该事件是一个鼠标单击还是一个鼠标移动。

事件源(event source):任何wxPython对象都能产生事件。例如按钮、菜单、列表框和任何别的窗口部件。

事件驱动(event-driven):一个程序结构,它的大部分时间花在等待或响应事件上。

事件队列(event queue):已发生的但未处理的事件的一个列表。

事件处理器(event handler):响应事件时所调用的函数或方法。也称作处理器函数或处理器方法。

事件绑定器(event binder):一个封装了特定窗口部件,特定事件类型和一个事件处理器的wxPython对象。为了被调用,所有事件处理器必须用一个事件绑定器注册。
wx.EvtHandler:一个wxPython类,它允许它的实例在一个特定类型,一个事件源,和一个事件处理器之间创建绑定。注意,这个类与先前定义的事件处理函数或方法不是同一个东西。

每个事件都有一个事件类型属性,它使得不同的事件能够被辨别。例如,鼠标释放和鼠示按下事件都被认为是同一个类的实例,但有不同的事件类型

列子:
self.Bind----------bind函数是一个绑定器
(wx.EVT_BUTTON, ---事件---一个具体的事件:就是具体到是什么事件,鼠标事件等
self.OnClick, ----事件处理器
aButton)----------事件源

事件处理过程:
第一步,创建事件
第二步,确定事件对象是否被允许处理事件。
第三步 定位绑定器对象
第四步 决定是否继续处理
第五步 决定是否展开

 

2、GUI的布局:

 首先简单介绍一下绝对位置的布局:

The programmer specifies the position and the size of each widget in pixels. When you use absolute positioning, you have to understand several things.

1、the size and the position of a widget do not change, if you resize a window
2、applications look different (crappy) on various platforms
3、changing fonts in your application might spoil the layout
4、if you decide to change your layout, you must completely redo your layout, which is tedious and time consuming

实际项目中很少用到绝对位置的样式表达

 

Using sizers:

首先来看一种隐蔽的sizer使用方法:

class Absolute(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, size=(250, 180))
        panel = wx.Panel(self, -1)
        。。。。。。
        wx.TextCtrl(panel, -1, pos=(-1, -1), size=(250, 150))
        self.Centre()
        self.Show(True)

 从上面的代码中,我们没有看到使用sizers,但是其实是使用了的。因为wx.Frame有一个固定的built-in sizer,但是其只允许我们放置一个构件到wx.Frame container。这个放置进去的唯一组件沾满了wx.Frame container的所有空间,which is not given to the borders, menu, toolbar and the statusbar

 

下面总体介绍一下布局构件:

wx.BoxSizer :在一条水平或垂直线上的窗口部件的布局。当尺寸改变时,在控制窗口部件的的行为上很灵活。通常用于嵌套的样式。可用于几乎任何类型的布局。

wx.GridSizer:一个十分基础的网格布局。当你要放置的窗口部件都是同样的尺寸且整齐地放入一个规则的网格中是使用它。

wx.StaticBoxSizer :一个标准的box sizer。带有标题和环线。

wx.FlexGridSizer :对grid sizer稍微做了些改变,当窗口部件有不同的尺寸时,可以有更好的结果。

wx.GridBagSizer :grid sizer系列中最灵活的成员。使得网格中的窗口部件可以更随意的放置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值