丹东做网站,网站单页站群,拟定网站建设合同的工作过程记录,故宫网站建设自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501
使用wxPython之前#xff0c;先来了解两个基础对象#xff1a;应用程序对象和顶级窗口。
应用程序对象管理主事件循环#xff0c;主事件循环是wx…自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501
使用wxPython之前先来了解两个基础对象应用程序对象和顶级窗口。
应用程序对象管理主事件循环主事件循环是wxPython程序的动力。如果没有应用程序对象wxPython应用程序将不能运行。
顶级窗口通常用于管理最重要的数据控制并呈现给用户。
图3显示了这两个基础对象和应用程序的其他部分之间的关系。 图3 wxPython应用的基本结构
在图3中这个应用程序对象拥有顶级窗口和主循环事件。顶级窗口管理其窗口中的组件和其他的分配给它的数据对象。窗口和它的组件触发的事件基于用户的动作并接受事件通知以便改变显示。
1 创建一个wx.App的子类
在开始创建应用程序之前先来创建一个没有任何功能的子类。创建和使用一个wx.App子类需要执如下4个步骤
l 定义这个子类。
l 在定义的子类中写一个OnInit()初始化方法。
l 在程序的主要部分创建这个类的一个实例。
l 调用应用程序实例的MainLoop()方法。这个方法将程序的控制权转交给wxPython。
创建一个没有任何功能的子类具体代码如下
# -*- coding:utf-8 -*-
import wx # 导入wxPython
class App(wx.App): # 初始化方法 def OnInit(self): frame wx.Frame(parentNone, titleHello wyPython) # 创建窗口 frame.Show() # 显示窗口 return True # 返回值 if __name__ __main__: app App() # 创建App类的实例 app.MainLoop() # 调用App类的MainLoop()主循环方法
上述代码中定义了一个子类App()它继承父类wx.App子类中包含一个初始化方法OnInit()。在主程序中创建类的实例然后调用MainLoop()主循环方法。运行结果如图4所示。 图4 创建子类
2 直接使用wx.App
通常如果在系统中只有一个窗口的话可以不创建wx.App子类直接使用wx.App。这个类提供了一个最基本的OnInit()初始化方法具体代码如下
# -*- coding:utf-8 -*-
import wx # 导入wxPython
app wx.App() # 初始化wx.App类
frame wx.Frame(None,titleHello wyPython) # 定义了一个顶级窗口
frame.Show() # 显示窗口
app.MainLoop() # 调用wx.App类的MainLoop()主循环方法
上述代码中wx.App()初始化wx.App类包含了OnInit()方法运行结果与图4相同。
3 使用wx.Frame框架
在GUI中框架通常也称为窗口。框架是一个容器用户可以将它在屏幕上任意移动并可对它进行缩放它通常包含标题栏、菜单等。在wxPython中wx.Frame是所有框架的父类。当你创建wx.Frame的子类时子类应该调用其父类的构造器wx.Frame.__init__()。wx.Frame构造器的语法格式如下
wx.Frame(parent, id-1, title, poswx.DefaultPosition, sizewx.DefaultSize, stylewx.DEFAULT_FRAME_STYLE, nameframe)
参数说明
l parent框架的父窗口。如果是顶级窗口这个值是None。
l id关于新窗口的wxPython ID号。通常设为-1让wxPython自动生成一个新的ID。
l title窗口的标题。
l pos一个wx.Point对象它指定这个新窗口的左上角在屏幕中的位置。在图形用户界面程序中通常(0,0)是显示器的左上角。这个默认值(-1,-1)将让系统决定窗口的位置。
l size一个wx.Size对象它指定这个窗口的初始尺寸。这个默认值(-1,-1)将让系统决定窗口的初始尺寸。
l style指定窗口的类型的常量。可以使用或运算来组合它们。
l name框架内在的名字。可以使用它来寻找这个窗口。
创建wx.Frame子类的代码如下
# -*- coding:utf-8 -*-
import wx # 导入wxPython
class MyFrame(wx.Frame): def __init__(self,parent,id): wx.Frame.__init__(self,parent,id, title创建Frame,pos(100, 100), size(300, 300)) if __name__ __main__: app wx.App() # 初始化应用 frame MyFrame(parentNone,id-1) # 实例MyFrame类并传递参数 frame.Show() # 显示窗口 app.MainLoop() # 调用MainLoop()主循环方法
上述代码中在主程序中调用MyFrame类并且传递2个参数。在MyFrame类中自动执行__init__()初始化方法接收参数。然后调用父类wx.Frame的__init__()初始化方法设置顶级窗口的相关属性。运行结果如图5所示。 图5 使用wx.Frame框架