|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 My_A 于 2019-7-1 15:00 编辑
第一步
安装
安装了python的鱼油们很轻松就能安装:
pip install wxPython
# 如果网速不好也可以用国内清华的镜像源
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple wxPython
安装完成后,我们将创建一些简单的示例。
简单示例
我们从一个非常简单的例子开始。我们的第一个脚本将只显示一个小窗口。
它不会有多大作用。我们将逐行分析剧本。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# simple.py
import wx
app = wx.App()
frame = wx.Frame(None, title='Simple application')
frame.Show()
app.MainLoop()
这是wxPython中的第一个示例。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# simple.py
第一行是She-bang(玩Linux的同学对这个应该不陌生),后面是Python解释器的路径。第二行是一个神奇的注释,它指定源代码的编码。第四行是一个注释,它为脚本提供了一个名称。
这一行导入基本的wxPython模块。即core、widget、GDI、MISC和Windows。从技术上讲,wx是一个名称空间。基本模块中的所有函数和对象将以wx.前缀。下一行代码将创建一个应用程序对象。
每个wxPython程序必须有一个应用程序对象。
frame = wx.Frame(None, title='Simple application')
frame.Show()
在这里,我们创建了一个wx.Frame对象。一个wx.Frame控件是一个重要的容器部件。稍后我们将详细分析这个小部件。这个wx.Frame控件是其他控件的父控件。它本身没有parent。如果我们指定None对于parent参数,我们表示控件没有父级。它是控件层次结构中的顶级控件。在我们创建wx.Frame控件,我们必须调用Show()方法将其实际显示在屏幕上。
最后一行进入主循环(学过windows程序设计的同学应该知道)。主循环是一个没完没了的循环。它捕获并分发应用程序生命周期中存在的所有事件。
这是一个非常简单的例子。尽管这么简单,但是我们可以用这个窗口做很多事情。我们可以调整窗口的大小,最大化,最小化。这个功能需要大量的代码。所有这些都是隐藏的,默认情况下由wxPython工具包提供,并封装了起来。没有理由重新发明轮子。
Frame
Frame控件是wxPython中最重要的控件之一。它是一个容器控件。这意味着它可以包含其他widget。实际上,它可以包含任何不是框架或对话框的窗口。wx.Frame由标题栏、边框和中央容器区域组成。标题栏和边框是可选的。他们可以被各种flage移除。
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")
构造函数有七个参数。第一个参数没有默认值。其他六个参数确实有。这四个参数是可选的。前三项是强制性的。
wx.DEFAULT_FRAME_STYLE是一组默认标志:wx.MINIMIZE_BOX | wx.MAXIMIZE_BOX | wx.RESIZE_BORDER | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.CLIP_CHILDREN..其中这些常量使用位标识的方法表示,所以我们用"|"(或)操作符来控制。通过组合各种样式,我们可以更改wx.Frame控件:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# no_minimize.py
import wx
app = wx.App()
frame = wx.Frame(None, style=wx.MAXIMIZE_BOX | wx.RESIZE_BORDER
| wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX)
frame.Show(True)
app.MainLoop()
我们的目的是展示一个没有最小化框的窗口。因此,我们没有在样式参数中指定此标志。
大小和位置
我们可以通过两种方式指定应用程序的大小。我们在小部件的构造函数中有一个size参数,或者我们可以调用SetSize()方法。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# set_size.py
import wx
class Example(wx.Frame):
def __init__(self, parent, title):
super(Example, self).__init__(parent, title=title,
size=(350, 250))
def main():
app = wx.App()
ex = Example(None, title='Sizing')
ex.Show()
app.MainLoop()
if __name__ == '__main__':
main()
在本例中,应用程序的大小为350x250像素。
def __init__(self, parent, title):
super(Example, self).__init__(parent, title=title,
size=(350, 250))
在构造函数中,我们设置了wx.Frame小部件到350 px。小部件的高度为250 px。
同样,我们可以在屏幕上定位我们的应用程序。默认情况下,窗口放在屏幕的左上角。但是,在各种操作系统平台上,甚至在窗口管理器上,它都可能有所不同。一些窗口管理器自己放置应用程序窗口。他们中的一些人做了一些优化,这样窗口就不会重叠。程序员可以通过编程方式定位窗口。我们已经看到pos参数在wx.Frame控件的构造函数中。通过提供除默认值之外的其他值,我们可以自己控制位置。
这里有一些方法可以实现:
示例:#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# moving.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))
def main():
app = wx.App()
ex = Example(None, title='Moving')
ex.Show()
app.MainLoop()
if __name__ == '__main__':
main()
当然,
如果我们想要使窗口最大化(全屏),我们也可以用Frame类的Maximize函数
如果我们想要是窗口居中的话,我们可以使用Frame类的Center(或Centre)函数
|
|