wxPython教程(二) 开始编写
转自:http://thisis.yorven.site/blog/index.php/2017/09/16/wxpython-jiaocheng-er-kaishibianxie/
简单例子
从简单例子开始,我们的脚本将新建一些简单窗口。没有太多的东西,我们将一行一行的分析下面这段脚本:
#!/usr/bin/python |
这是我们的第一个wxPython例子,首先来看看前两行。
#!/usr/bin/python |
第一行首先是一个she-bang符号,即#!,后面紧跟着Python解释器的路径。第二行是一句注释,表明了该脚本的名字。
import wx |
这一行导入了wxPython的基本模块,即上一节提到的core、controls、gdi、misc和windows模块。wx是一个命名空间,所有来自于基本模块的函数和对象都以wx打头。
app = wx.App() |
这一行新建了一个应用对象(application object),所有的wxPython程序必须有一个应用对象。
frame = wx.Frame(None, -1, 'simple.py') |
这里我们新建了wx.Frame对象。构造函数的各参数意义:父类=None,id=-1,title=’simple.py’。wx.Frame对象是一种重要的容器widget,随后我们将详细分析它。wx.Frame是其他widgets的父类,它自身并没有父类,所以在widgets层级中属于一种顶级widget。id可设置为-1,或wxPython的一些常量,后文会提到。title即窗口的标题。在新建wx.Frame widget之后,我们必须调用Show()函数才能使其显示在屏幕上。
app.MainLoop() |
最后一行使当前应用进入主循环。主循环是一个无限循环,它捕获、分发应用生命周期中的所有事件。
以上是一个非常简单的例子,但我们得到的窗口仍然有很多功能。比如改变大小、最大化、最小化等。这些功能需要很多的代码,但这些都默认由wxPython提供,我们也无需重新造轮子。
wx.Frame
wx.Frame是wxPython中最重要的widgets,它是一种容器widgets,可以容纳其他widgets。事实上,wx.Frame可以容纳任何除了frame和dialog的window部件。wx.Frame包含一个标题栏、边框和一个中间的容器区域,其中标题栏和边框是可选的,通过设置不同的标记可以去掉。
wx.Frame的构造函数如下:
wx.Frame(wx.Window parent, int id=-1, string title='', wx.Point pos = wx.DefaultPosition, |
构造函数有7个参数。第一个参数没有默认值,其他六个都有。有四个参数为可选参数,前三个为强制的。
wx.DEFAULT_FRAME_STYLE包含一系列的默认Flags,这些Flag可以设置窗口的样式,比如wx.MINIMIZE_BOX | wx.MAXIMIZE_BOX | wx.RESIZE_BORDER | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.CLIP_CHILDREN。竖线将不同的Flag联合起来。下面是一个简短的例子:
#!/usr/bin/python |
我们想得到一个没有最小化按钮的窗口,所以我们在style参数的设置中没有加wx.MINIMIZE_BOX这个参数。
大小和位置
我们可以通过两种方式定义应用的大小。在widget的构造函数中,有一个参数size可以设定。或者我们可以调用SetSize()方法。
#!/usr/bin/python |
在上面这个例子中,应用的大小为250x200px。我们是在构造函数中定义这一参数的。
相似地,我们也可以对我们的应用再屏幕上进行定位。默认情况下,窗口被放置在屏幕的左上角,但不同操作系统或者窗口管理系统可能存在不同。程序员可在程序代码中设定窗口位置。我们已经在wx.Frame的构造函数中看到了pos参数,通过它我们可以指定窗口的位置。
同时,有几种方法可以设定窗口位置,如下所示。
Method | Description |
---|---|
Move(wx.Point point) | 将窗口移动到指定位置 |
MoveXY(int x, int y) | 将窗口移动到指定位置 |
SetPosition(wx.Point point) | 设定窗口位置 |
SetDimensions(x, y, width, height, sizeFlags) | 设定窗口位置和大小 |
下面是一个具体的例子:
#!/usr/bin/python |
如果我们想最大化我们的程序,需要将窗口放置在(0,0)的坐标位置,然后让窗口占满整个屏幕。使用Maximize()函数可以将wx.Frame最大化。
在屏幕中央
如果我们想将应用再屏幕中居中,wxPython已经有很方便的方法,直接调用Centre()方法就可以做到,且无需手动计算屏幕的宽度和高度。
#!/usr/bin/python |
在这个例子中,我们将一个小窗口居中在屏幕当中。
self.Centre() |
上面就是居中窗口的方法调用。
在本节中,我们写了wxPython的简单代码样例,让读者能够快速的上手wxPython。
wxPython教程(二) 开始编写