Python程序设计课件第11章GUI界面编程.pptx

上传人(卖家):晟晟文业 文档编号:3713825 上传时间:2022-10-06 格式:PPTX 页数:27 大小:332.20KB
下载 相关 举报
Python程序设计课件第11章GUI界面编程.pptx_第1页
第1页 / 共27页
Python程序设计课件第11章GUI界面编程.pptx_第2页
第2页 / 共27页
Python程序设计课件第11章GUI界面编程.pptx_第3页
第3页 / 共27页
Python程序设计课件第11章GUI界面编程.pptx_第4页
第4页 / 共27页
Python程序设计课件第11章GUI界面编程.pptx_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、 GUI概述与窗口布局概述与窗口布局 基于基于wxPython框架的框架的GUI开发开发第11章 GUI界面编程参考书目Python 程序设计目录 GUI概述与窗口布局概述与窗口布局 基于基于wxPython框架的框架的GUI开发开发这里说明图片内容 GUI概述与窗口布局概述与窗口布局 基于基于wxPython框架的框架的GUI开发开发目录这里说明图片内容 GUI概述与窗口布局1 什么是GUIGUI(Graphical User Interface,图形用户接口)是指用图形方式显示计算机操作的用户界面。图形用户界面一般有以下5个元素组成:组件窗体属性事件方法GUI概述与窗口布局1 什么是GUI

2、Python有许多优秀的GUI工具集,下面介绍Tkinter和wxPython两个GUI工具。Tk图形用户界面工具包标准的Python接口。Tkinter的调用转换成Tcl命令,然后交给Tcl解释器进行解释,实现Python的GUI界面Tkinter 作为优秀的跨平台GUI库 wxWidgets 的Python封装和Python模块的方式提供给用户的。是一款开源软件,并且具有非常优秀的跨平台能力wxPythonGUI概述与窗口布局1 什么是GUIGUI应用程序都是基于窗口的,其程序的流程一般如下:1.1.定义主窗口定义主窗口2.2.创建主窗口创建主窗口3.3.创建主窗口内的组件创建主窗口内的组

3、件4.4.显示主窗口显示主窗口5.5.进入消息接收和处理的循环过程进入消息接收和处理的循环过程GUI程序执行后不会主动退出,都停留在接收消息,根据消息执行相应操作的循环中。GUI概述与窗口布局1 什么是GUIGUI程序的消息处理模型如下:以触摸屏为例,当用户点击触摸屏,首先感知到屏幕上被触摸的XY坐标是操作系统内核空间的触摸屏设备驱动程序,然后设备驱动程序会将用户操作封装成消息传递给GUI程序运行时创建的消息队列,GUI程序在运行过程中需要实时处理队列中的消息,当队列没有消息时,程序将处于停滞状态。GUI概述与窗口布局1 什么是GUIGUI程序的开发,一般分为两部分:在代码中用程序创建窗口及窗

4、口内元素;1 编写消息处理函数对内核空间发来的消息做出响应。2GUI概述与窗口布局3 布局管理器图形用户界面中一般需要放置多种用户组件,比如按钮、输入框、文本框等。布局管理器管理界面中的组件位置和大小的设置。常用的布局管理器如下:不使用任何布局管理器,将控件放在固定的位置绝对位置布局 将控件按照网格方式排列,将容器分成规则矩形块GridLayout(网格布局)默认的对齐方式为居中对齐,布局方式为自左向右排列,当一行排满后自动换行FlowLayout(流式布局)把容器简单的划分为东、西、南、北、中5个区域 每个区域只能加入一个控件BorderLayout(边框布局)GUI概述与窗口布局概述与窗口

5、布局 基于基于wxPython框架的框架的GUI开发开发目录这里说明图片内容 基于wxPython框架的GUI开发1 wxPython框架安装与配置使用pip工具安装wxPython:pip install-U wxPython基于wxPython框架的GUI开发2 利用wx.App子类创建窗体在开始创建应用程序之前,先创建一个没有任何功能的子类。创建和使用一个wx.App子类,需要执行如下4个步骤:定义子类定义子类在定义的子类中写一个在定义的子类中写一个OnInit()OnInit()初始化方法初始化方法在程序的主要部分创建这个类的实例在程序的主要部分创建这个类的实例调用应用程序实例的调用应

6、用程序实例的MainLoop()MainLoop()方法,这个方法将程方法,这个方法将程序的控制权转交给序的控制权转交给wxPthonwxPthon基于wxPython框架的GUI开发2 利用wx.App子类创建窗体【例】利用wx.App子类创建窗体。import wxclass App(wx.App):def OnInit(self):frame=wx.Frame(parent=None,title=人生苦短,我爱Python)frame.Show()return Trueif _name_=_main_:app=App()app.MainLoop()基于wxPython框架的GUI开发4

7、使用wxPython框架创建窗体在GUI中框架通常也称为窗口。框架是一个容器,用户可以将它在屏幕上任意移动,并可对它进行缩放,它通常包含诸如标题栏、菜单等。在在wxPythonwxPython中,中,wx.Framewx.Frame是所有框架的父类。当创建是所有框架的父类。当创建wx.Framewx.Frame的子类的子类时,子类应该调用其父类的构造器时,子类应该调用其父类的构造器wx.Frame._init_()wx.Frame._init_()。wx.Framewx.Frame的构的构造器语法格式如下:造器语法格式如下:wx.Frame(parent,id=-1,title=,pos=wx

8、.DefaultPosition,size=wx.DefaultSize,style=wx.DEFAULT_FRAME_STYLE,name=frame)基于wxPython框架的GUI开发4 使用wxPython框架创建窗体【例】利用【例】利用wx.Frame创建窗体示例。创建窗体示例。import wxclass MyFrame(wx.Frame):def _init_(self,parent,id):wx.Frame._init_(self,parent,id,title=人生苦短,我爱Python,pos=(200,200),size=(400,300)if _name_=_main_

9、:app=wx.App()frame=MyFrame(parent=None,id=-1)frame.Show()app.MainLoop()基于wxPython框架的GUI开发5 wxPython框架中常用的控件1.StaticText文本类创建完窗口以后,会在在窗口上添加的按钮、文本、输入框等控件。创建完窗口以后,会在在窗口上添加的按钮、文本、输入框等控件。wx.StaticText(parent,id,label,pos=wx.DefaultPosition,size=wx.DefaultSize,style=0,name=staticText)在在wxPythonwxPython中,中

10、,绘制纯文本绘制纯文本使用类使用类wx.StaticTextwx.StaticText来完成。使用来完成。使用wx.StaticTextwx.StaticText能够改变文本的对齐方式、字体、颜色等。能够改变文本的对齐方式、字体、颜色等。【例】center=wx.StaticText(panel,-1,白日依山尽,黄河入海流。n欲穷千里目,更上一层楼。,(100,80),(200,200),wx.ALIGN_CENTER)基于wxPython框架的GUI开发5 wxPython框架中常用的控件1.StaticText文本类wx.Font(pointSize,family,style,weigh

11、t,underline=False,faceName=,encoding=wx.FONTENCODING_DEFAULT)wx.Fontwx.Font创建字体,通过设置属性对界面中的字体进行设置创建字体,通过设置属性对界面中的字体进行设置。pointSize:字体的整数尺寸,单位为磅。family:用于快速指定一个字体而无须知道该字体的具体名字。style:指明字体的醒目程度 underline:仅仅在Windows系统下有效果,如果值为True,有下画线,False无下画线 faceName:指定字体名 encoding:允许在几个编码中选择一个,大多数情况下可以使用默认编码基于wxPyth

12、on框架的GUI开发5 wxPython框架中常用的控件2.TextCtrl输入文本类wx.TextCtrl(parent,id,value=,pos=wx.DefaultPosition,size=wx.DefaultSize,style=0,validator=wx.DefaultValidator,name=wx.TextCtrlNameStr)wx.StaticTextwx.StaticText类只能用于显示静态的文本,要想输入文件与用户类只能用于显示静态的文本,要想输入文件与用户进行交互,要用进行交互,要用wx.TextCtrlwx.TextCtrl类,它允许单行和多行文本。它也可类

13、,它允许单行和多行文本。它也可以作为密码输入控件,掩饰所按下的按钮。以作为密码输入控件,掩饰所按下的按钮。基于wxPython框架的GUI开发5 wxPython框架中常用的控件import wx#导入wxPythonclass MyFrame(wx.Frame):def _init_(self,parent,id):wx.Frame._init_(self,parent,id,title=会员管理系统用户登录界面,size=(400,300)panel=wx.Panel(self)#创建面板#创建文本和输入框 self.title=wx.StaticText(panel,label=欢迎使用

14、会员管理系统,pos=(140,20)self.label_user=wx.StaticText(panel,label=用户名:,pos=(50,50)self.text_user=wx.TextCtrl(panel,pos=(100,50),size=(235,25),style=wx.TE_LEFT)self.label_pwd=wx.StaticText(panel,label=密 码:,pos=(50,90)self.text_pwd=wx.TextCtrl(panel,pos=(100,90),size=(235,25),style=wx.TE_PASSWORD)【例】用例】用wx

15、.TextCtrlwx.TextCtrl类和类和wx.StaticTextwx.StaticText类实现一个包含用户名和类实现一个包含用户名和密码的登录界面。密码的登录界面。基于wxPython框架的GUI开发5 wxPython框架中常用的控件if _name_=_main_:app=wx.App()#初始化应用 frame=MyFrame(parent=None,id=-1)#初始化MyFrame类,并传递参数 frame.Show()#显示窗口 app.MainLoop()#调用主循环方法【例】用例】用wx.TextCtrlwx.TextCtrl类和类和wx.StaticTextwx.

16、StaticText类实现一个包含用户名和类实现一个包含用户名和密码的登录界面。密码的登录界面。基于wxPython框架的GUI开发5 wxPython框架中常用的控件3.Button按钮类wx.Button(parent,id,label,pos,size=wxDefaultSize,style=0,validator,name=button)按钮是按钮是GUIGUI界面中应用最为广泛的控件,它常常用于捕获用户生成界面中应用最为广泛的控件,它常常用于捕获用户生成的单击事件。其最明显的用途是触发绑定到一个处理函数。的单击事件。其最明显的用途是触发绑定到一个处理函数。#创建确定和取消的界面 se

17、lf.bt_confirm=wx.Button(panel,label=确定,pos=(105,130)self.bt_cancel=wx.Button(panel,label=取消,pos=(195,130)基于wxPython框架的GUI开发5 wxPython框架中常用的控件4.BoxSizer布局wxPythonwxPython有另一种更智能的布局方式:有另一种更智能的布局方式:sizer(sizer(尺寸器尺寸器)。sizersizer是用是用于自动布局一组窗口控件的算法。当于自动布局一组窗口控件的算法。当sizersizer被附加到一个容器中,被附加到一个容器中,通常是一个框架或面

18、板。在父容器中创建子窗口控件必须被分别添通常是一个框架或面板。在父容器中创建子窗口控件必须被分别添加到加到sizersizer中。当中。当sizersizer被附加到容器时,它随后就可以管理它所包被附加到容器时,它随后就可以管理它所包含的子布局。含的子布局。控件的几何位置是绝对位置,即固定的。当调整窗口大小时,由于控件坐标不能随着界面的大小变化,会导致界面变得不够美观基于wxPython框架的GUI开发5 wxPython框架中常用的控件4.BoxSizer布局sizer名称描述BoxSizer在一条水平或重垂直窗口部件的布局。控制窗口部件在行为上很灵活。一般用于嵌套的样式,应用面广GridS

19、izer一个基础的网格布局,当你要放置的窗口部件是同样的尺寸且整齐地放入一个规则的网格中可以使用它FlexGridSizer对GridSizer做了一定改变,窗口部件有不同的尺寸时,可以有更好的结果GridBagSizerGridSizer系列中最灵活的成员。网络中的窗口部件可以随意放置StaticBoxSizer一个标准的BoxSizer,常有标题和环线基于wxPython框架的GUI开发5 wxPython框架中常用的控件4.BoxSizer布局 使用Add()方法将控件加入sizer#添加容器,容器中的控件按纵向排列添加容器,容器中的控件按纵向排列 vsizer=wx.BoxSizer(

20、wx.VERTICAL)vsizer.Add(self.title,proportion=0,flag=wx.BOTTOM|wx.TOP|wx.ALIGN_CENTRE,border=15)panel.SetSizer(vsizer)Box.Add(control,proportion,flag,border)基于wxPython框架的GUI开发5 wxPython框架中常用的控件5.事件处理事件就是用户执行的动作,如单击按钮就是一个单击事件。事件的处理可利用控件的Bind()方法可以将事件处理函数绑定到事件上,事件发生时,函数被调用。【例】【例】输入用户名密码,点击确定按钮就要判读输入的信息

21、是否正输入用户名密码,点击确定按钮就要判读输入的信息是否正确,并输出对应的提示,这就要使用确,并输出对应的提示,这就要使用wx.Python的事件处理。的事件处理。bt_confirm.Bind(wx.EVT_BUTTON,OnclickSubmit)wx.EVT_BUTTON:事件类型为按钮事件 OnlickSubmit:方法名。事件发生时执行该方法本章小结本章主要介绍了GUI编程的原理和步骤。并讲解了Python中进行GUI编程使用最多的模块:wxPython的使用。在进行GUI编程时首先是窗口的创建、然后需要熟悉每个模块都支持那些常用的组件,以及这些组件的属性设置和常用方法。由于GUI程序是基于事件处理的,还需要了解常用事件类型和事件绑定。思考与练习1.GUI程序的一般流程是怎样的?2.wxPython中的Frame和Panel有什么作用?3.使用wxPython实现登录、注册程序。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(Python程序设计课件第11章GUI界面编程.pptx)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|