wxpython应用实例_wxpython 教程(二): 开始编写 | wxPython 例子 样例 | 教程 推荐 - 老土译站...

在这一部分,我们将创建一些简单的wxPython例子。

简单例子

从简单例子开始,我们的脚本将新建一些简单窗口。没有太多的东西,我们将一行一行的分析下面这段脚本:

#!/usr/bin/python

# simple.py

import wx

app = wx.App()

frame = wx.Frame(None, -1, 'simple.py')

frame.Show()

app.MainLoop()

这是我们的第一个wxPython例子,首先来看看前两行。

#!/usr/bin/python

# simple.py

第一行首先是一个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')

frame.Show()

这里我们新建了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提供,我们也无需重新造轮子。

simple.png

图:简单例子的结果

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,

wx.Size size = wx.DefaultSize, style = wx.DEFAULT_FRAME_STYLE, string name = "frame")

构造函数有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

# nominimizebox.py

import wx

app = wx.App()

window = wx.Frame(None, style=wx.MAXIMIZE_BOX | wx.RESIZE_BORDER

| wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX)

window.Show(True)

app.MainLoop()

我们想得到一个没有最小化按钮的窗口,所以我们在style参数的设置中没有加wx.MINIMIZE_BOX这个参数。

nominimizebox.png

图:没有最小化按钮框的窗口

大小和位置

我们可以通过两种方式定义应用的大小。在widget的构造函数中,有一个参数size可以设定。或者我们可以调用SetSize()方法。

#!/usr/bin/python

# -*- coding: utf-8 -*-

# size.py

import wx

class Example(wx.Frame):

def __init__(self, parent, title):

super(Example, self).__init__(parent, title=title,

size=(250, 200))

self.Show()

if __name__ == '__main__':

app = wx.App()

Example(None, title='Size')

app.MainLoop()

在上面这个例子中,应用的大小为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

# -*- coding: utf-8 -*-

# move.py

import wx

class Example(wx.Frame):

def __init__(self, parent, title):

super(Example, self).__init__(parent, title=title,

size=(300, 200))

self.Move((800, 250))

self.Show()

if __name__ == '__main__':

app = wx.App()

Example(None, title='Move')

app.MainLoop()

如果我们想最大化我们的程序,需要将窗口放置在(0,0)的坐标位置,然后让窗口占满整个屏幕。使用Maximize()函数可以将wx.Frame最大化。

在屏幕中央

如果我们想将应用再屏幕中居中,wxPython已经有很方便的方法,直接调用Centre()方法就可以做到,且无需手动计算屏幕的宽度和高度。

#!/usr/bin/python

# -*- coding: utf-8 -*-

# center.py

import wx

class Example(wx.Frame):

def __init__(self, parent, title):

super(Example, self).__init__(parent, title=title,

size=(300, 200))

self.Centre()

self.Show()

if __name__ == '__main__':

app = wx.App()

Example(None, title='Center')

app.MainLoop()

在这个例子中,我们将一个小窗口居中在屏幕当中。

self.Centre()

上面就是居中窗口的方法调用。

在本节中,我们写了wxPython的简单代码样例,让读者能够快速的上手wxPython。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值