之所以被称为核心组件,我想是因为这个组件集包含了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系列中最灵活的成员。使得网格中的窗口部件可以更随意的放置。
分享到:
相关推荐
在本文中,我们将详细介绍Python图形用户界面(GUI)库wxPython中的Core组件BoxSizer的用法。wxPython是一个将wxWidgets C++库包装为Python模块的库,它为Python提供了丰富的GUI组件,BoxSizer是一种布局管理器,用于...
wxPython API包含大量函数和组件,组件是构建GUI程序的基本构建块。在Windows平台上,这些组件被称为控件,如按钮、文本框和列表视图等。通过组合这些组件并利用事件处理机制,开发者可以创建出复杂的交互式用户界面...
它基于C++的wxWidgets库,提供了丰富的控件和组件,使开发者可以轻松创建美观、功能齐全的应用程序。 接着,MySQL是一种广泛应用的关系型数据库管理系统(RDBMS),用于存储和管理数据。在Python中,我们可以使用像...
6. 最后,将`rightMenu`设置为当前组件(在这个例子中是`mx:Application`)的`contextMenu`属性,使得在该组件上右键点击时显示这个自定义菜单。 ```actionscript private function fullScr():void{ var rightMenu...
在Python中,库如Tkinter、wxPython、Qt for Python(PySide2或PyQt5)等都提供了创建GUI元素的工具,而“Core”部分则可能表示它是该库的基础框架,包含了一些核心功能和类,为其他更具体的UI组件提供支持。...
`pyqode.core`是Python中一个强大的代码编辑器框架,专为开发人员提供便利的文本编辑器组件。这个库的核心功能在于提供了一套完整的代码编辑器组件,可以用于构建自定义的代码编辑器应用或者集成到现有的GUI应用中。...
1. wxmsw315u_core_vc140_x64.dll:这是wxWidgets库的一部分,wxWidgets是一个跨平台的C++库,用于创建GUI应用程序,与wxPython相辅相成,提供了与操作系统直接交互的能力。 2. python38.dll:这是Python解释器的...
在`options`中,我们指定了`wxPython`的必要组件,并排除了一些不必要的DLL文件。这有助于减小最终生成的.exe文件大小。 现在,打开命令行窗口,定位到`setup.py`所在的目录,然后运行`python setup.py py2exe`。这...
10. wx._core_.pyd:这是Python的动态链接库,包含了wxPython的核心模块,是Python程序与wxPython库交互的关键。 通过这些文件,我们可以深入理解NipaThought的工作原理以及wxPython在游戏开发中的应用。对于开发者...
1. wxmsw28uh_core_vc.dll、wxbase28uh_vc.dll、wxmsw28uh_adv_vc.dll和wxmsw28uh_html_vc.dll:这些都是wxPython库的不同组件,分别对应核心、基础、高级和HTML渲染功能。它们为LapTimer提供了构建用户界面所需的...
它提供了许多预定义的组件,如按钮、文本框等,使得开发者能够快速创建具有原生外观的Windows应用。 3. **BOA Constructor**: BOA Constructor是一个集成开发环境(IDE),专门用于wxPython的开发。它允许用户通过...
wxPython是Python语言的GUI工具包,它为Python提供了丰富的窗口组件,使得Python开发者能够创建功能丰富的桌面应用程序。wxPython使用wxWidgets,它是一个跨平台的C++库,为开发者提供了多种标准GUI控件。wxPython是...
wxFormBuilder支持生成的代码基于wxWidgets库,这是一个C++的GUI库,但通过Python的wxPython封装,可以在Python环境中使用。wxWidgets库的强大之处在于它能实现跨平台兼容,这意味着使用wxFormBuilder设计的界面不仅...
各种以dll结尾的文件(如wxmsw28h_core_vc.dll、python25.dll等)是动态链接库,包含了Cold Launcher运行所必需的函数和资源;MSVCR71.dll和pythoncom25.dll等则涉及Python的运行环境和组件支持;pywintypes25.dll是...
2. **python27.dll、wx._core_.pyd**:这些文件表明Mail Stack可能基于Python编程语言开发,Python27.dll是Python运行时的一部分,而wx._core_.pyd是wxPython库的动态链接库,它将wxWidgets与Python结合,用于构建...
7. wx._core_.pyd:这是Python的wxPython库的一部分,是Python对wxWidgets的绑定,用于构建图形用户界面。 总的来说,Excel Spy作为一款开源的Excel搜索工具,借助强大的Python和wxWidgets库,为用户提供了高效、...
对于图形计算,可能需要用到绘图库,如matplotlib(Python)、D3.js(JavaScript)或Core Graphics(iOS)。开发者需要编写代码来解析和渲染函数,使用户能查看和交互函数图像。 最后,测试是项目的关键环节。单元...