PPTOK课件站

展开

首页 > 培训教程PPT
第十章Python的GUI编程ppt
  • 立即下载
  • PPT预览

    • 第十章Python的GUI编程ppt

    PPT摘要

    这是第十章Python的GUI编程ppt,包括了概述,GUI程序开发简介,Tkinter与主要组件,Turtle库简介等内容,欢迎点击下载。

    Python语言编程导论
    第十章  Python的GUI编程
    张晋连 2016.11
    内容提要
    概述
    GUI程序开发简介
    Tkinter与主要组件
    Turtle库简介
    一、概述
    使用图形用户界面(GUI),可以使程序更友好。
    Python作为一种“胶水性”语言,提供了众多GUI开发库的绑定,适合快速开发GUI。
    目前大部分开发库还不支持Python 3,且库的更新速度不是很快。如果使用的是Python 3,可选择的开发库就不是很多了。
    目前常用的开发库有:Python内置的Tkinter、Graphics、Turtle等,以及非常强大的PyQT等。如果使用的是Python 2,还有如wxPython、PyGTK、PMW等开发库可以选择。
    本章简要介绍以下图形库:
    Tkinter—Python 标准GUI
    Turtle—python内置的图形库。
    二、GUI程序开发简介
    日常使用的大量客户端程序都属于GUI程序,即在一个界面上有很多功能块,包括:标签、按钮、输入框、菜单等。
    开发GUI程序,首先需要有一块空白画面,然后在其上划分出不同的区域,放上不同的模块,最后完成每一个模块的功能。
    GUI程序开发基本步骤和过程:
    首先要有底层的根窗口对象,在其基础上创建一个个小窗口对象。每一个窗口都是一个容器,可将所需的组件置于其中。每种GUI开发库都拥有大量的组件,一个GUI程序就是由各种不同功能的组件组成的,而根窗口对象则包含了所有组件。
    组件本身也可以作为一个容器,它可以包含其他组件,如下拉框。这种包含其他组件的称为父组件,反之,包含在其他组件中的组件称为子组件。这是一种相对的概念,对于有着多层包含的情况,某组件的父组件一般指的是直接包含它的组件。
    构建出了GUI程序的每一个组件,只完成了程序的界面,但此时只能看不能用,需要给每一个组件添加对应的功能。
    使用GUI程序时,会进行各种操作,如鼠标移动,按下或松开鼠标键,按下键盘按键等,这些操作称为事件。每个组件对应着一些行为,如在文本框中输入文本,单击按钮等,这些也称为事件。GUI程序启动的时候就一直监控这些事件,当某个事件发生的时候,就进行对应的处理并返回相应的结果。因此,GUI程序是由这一整套事件驱动的,这个过程称为事件驱动处理。
    一个事件发生后,GUI程序捕获该事件、作出对应的处理并返回结果的过程称为回调。如计算器程序,单击了“=”按钮之后,便产生了一个事件,需要计算最终的结果,程序便开始对算式进行计算,返回最终结果并显示出来。这个计算并显示结果的过程即为回调。
    当为程序需要的每一个事件都添加完相应的回调处理之后,整个GUI就完成了。
    三、Tkinter与主要组件
    Tk是Python默认的工具集(即图形库),Tkinter是Tk的Python接口,通过Tkinter可以方便地调用Tk进行图形界面开发。
    Tk与其他开发库相比,不是最强大的,模块工具也不是非常的丰富。但它非常简单,所提供的功能开发一般的应用也完全够用了,且能在大部分平台上运行。
    Python自带的IDEL也是用Tkinter开发的。
    Tkinter的不足之处是缺少合适的可视化界面设计工具,需要通过代码来完成窗口设计和元素布局。
    Tkinter中提供了较为丰富的控件,完全能满足基本的GUI程序的需求。
    由于Tkinter模块已经在Python中内置,所以在使用之前,只需将其导入即可。
    两种导入方式为:
       import tkinter as tk—导入tkinter,但没引入任何组件,在使用时需要使用tk前缀,如需要引入按钮,则表示为:tk.Button。
       from tkinter import *—将tkinter中的所有组件一次性引入。
    1、在程序中使用Tkinter
    利用Tkinter模块来引用Tk构建和运行GUI程序,通常需要5步:
    导入Tkinter模块;
    创建一个顶层窗口;
    在顶层窗口的基础上构建所需要的GUI模块和功能;
    将每一个模块与底层程序代码关联起来;
    执行主循环。
    Tkinter主要组件简介
    组件的共同属性:
    dimensions :尺寸
    colors:颜色
    fonts:字体
    anchors:锚
    relief styles:浮雕式
    bitmaps:显示位图
    cursors:光标的外形
    说明:每种组件还有其各自特有的属性
    注意:
    Tk使用了一种包管理器来管理所有的组件,当定义完组件之后,需要调用pack()方法来控制组件的显示方式,若不调用pack()方法,组件将不会显示。
    在交互环境下,编写Tkinter测试代码时,运行过Tk()(创建顶层窗口的函数)之后即进入主循环,可以看到顶层窗口。而若是运行py文件,一定要调用mainloop()方法进入主循环,方可看到顶层窗口。
    创建GUI应用程序窗口代码模板:
    2、顶层窗口
    顶层窗口也称为根窗口。
    顶层窗口实际上是一个普通窗口,包括一个标题栏和窗口管理器所提供的窗口装饰部分,如最大化按钮等。
    在一个Tkinter开发的应用程序中,只需要创建一个顶层窗口即可,且此窗口的创建必须是在其他窗口创建之前。
    例10-1:创建顶层窗口
    3、标签
    标签组件可以用来显示图片和文本,通过在文本中添加换行符来控制换行,也可以通过控制组件的大小实现自动换行。
    例10-2:使用标签(Label)编写一个程序,在程序主体中显示“Hello World!”。
    程序及执行结果:
    Label组件常用参数
    增加了参数后的程序及执行结果:
    4、框架
    框架(Frame)相对于其他组件而言,它只是个容器,因为它没有方法,但它可以捕获键盘和鼠标的事件来进行回调。
    框架一般用作包含一组控件的主体,且可以定制外观。
    例10-3:创建不同样式的框架
    5、按钮
    按钮组件(Button)是tkinter最常用的图形组件之一,通过Button可以方便地与用户进行交互。
    严格地说,按钮(Button)也可被看作标签,只是它可以捕获键盘和鼠标事件。
    按钮可以禁用,禁用之后的按钮不能进行单击等任何操作。
    如果将按钮放进TAB群中,就可以使用TAB键来进行跳转和定位。
    例10-4:创建按钮示例
    Button组件常用参数
    增加了参数后的程序和执行结果:
    6、输入框
    一个GUI程序,接收用户的输入几乎是必不可少的。输入框(Entry)组件就是用来接收用户输入的最基本的组件。
    可以为输入框设置默认值,也可以禁止用户输入。如果禁止输入,用户就不能改变输入框中的值了。
    当用户输入的内容一行显示不下的时候,输入框会自动生成滚动条。
    例10-5:创建输入框示例
    Entry参数组件常用参数
    例10-6:将摄氏度转换为华氏度
    程序执行:
    7、单选按钮
    单选按钮(Radiobutton)是一组排他性的选择框,只能从该组中选择一个选项,当选择了其中一项之后便会取消其他选项的选择。
    要想使用单选按钮,必须将这一组单选按钮与一个相同的变量关联起来,由用户为这个变量选择不同的值。
    例10-7:创建单选按钮示例
    Radiobutton组件常用参数
    8、复选按钮
    与单选按钮相对的是复选按钮(Checkbutton)。复选按钮之间没有互斥作用,可以一次选择多个。
    同样地,每一个按钮都需要与一个变量相关联,且每一个复选按钮关联的变量都是不同的。若像单选按钮一样,关联的是同一个按钮,则当选中其中一个的时候,会将所有按钮都选上。
    可以给每一个复选按钮绑定一个回调,当该选项被选中时,执行该回调。
    例10-8:基本复选按钮示例
    例10-9:创建带“禁用”状态的复选按钮
    Checkbutton组件常用参数
    例10-10:单选按钮及复选按钮综合应用
    程序:
    说明:
    程序中,文字的颜色通过Radiobutton来选择,同一时间只能选择一个颜色。在三个Red、Blue和Green三个单选框中,定义了同样的变量参数color,选择不同的单选按钮会为该变量赋予不同的字符串值,内容即为对应的颜色。
    任何单选按钮被选中都会触发colorChecked()函数,将标签修改为对应单选框表示的颜色。
    9、消息
    很多时候需要给用户发送消息,一般内容较多,如帮助信息等。
    消息(Message)控件提供了显示多行文本的方法,且可以设置字体和背景色。Message组件提供了一个标准的方法,可以非常方便地实现这项功能。
    例10-11:创建消息示例
    10、滚动条
    滚动条(Scrollbar)组件可以添加至任何一个组件,一些组件在界面显示不下时会自动添加滚动条,但可以使用滚动条组件来对其进行控制。
    例10-12:滚动条示例
    11、列表框
    列表框(ListBox)组件是一个选项列表,用户可以从中选择某一个选项。
    例10-12中滚动条组件中使用了列表框。
    例10-13:创建列表框示例
    12、消息框
    消息窗口(messagebox)用于弹出提示框向用户进行告警,或让用户选择下一步如何操作。消息框包括很多类型,常用的有info、warning、error、yesno、okcancel等,包含不同的图标、按钮以及弹出提示音。
    例10-14:各种消息框应用
    源程序:
    13、绘图组件
    绘图组件(Canvas—画布)可以在GUI中实现2D图形的绘制,相当于画图板。组件内置了多种绘图函数,可以通过简单的2D坐标绘制直线、矩形、圆形、多边形等。
    例10-15:绘图应用
    程序执行:
    说明:
    直线(line),即线段,通过两个端点定义。坐标顺序为x1、y1、x2、y2。
    矩形(rectangle)通过对角线上的两个点来定义。
    需要注意的是Canvas中没有画圆函数,这里通过绘制椭圆间接实现了绘制圆形的函数drawCircle()。椭圆(oval)是通过外切矩形的对角线两点来定义的。
    例10-16:画布显示文字、图片和图形
    例10-17:控制图形移动
    用键盘的上、下、左、右键可移动红色方块
    例10-18:编程实现简易聊天窗口GUI
    聊天窗口布局:
    左上:聊天历史信息显示
    左中:当前信息编辑区域
    左下:按钮区域
    右侧:信息显示区域
    Frame控件:
    容器区域布局:
    frmLT、frmLC、frmLB、frmRT
    统一控件对象命名规则:
    “控件类型” +“功能”
    frmLT, frame+LeftTop
    txtMsg, text控件+消息
    btnSend, button控件+发送
    窗口控件:
    创建各窗口控件:
    sendMsg()
    回调函数
    功能:在消息框列表输出历史消息,同时将当前时间、当前信息作为最后一条历史消息。然后删除消息发送框的内容。
    sendMsgEvent():
    cancelMsg ():
    grid()方法:界面上控件的布局
    grid()方法:界面上控件的布局
    源程序:
    课堂练习一:
    课堂练习一
    四、Turtle库简介
    Turtle库是Python语言中一个很流行的绘制图像的函数库。
    使用turtle库,可想象为一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0—中心)位置开始,方向向右。
    它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。
    详细信息见:https://docs.python.org/3/library/turtle.html
    1、控制画笔绘制状态方法
    2、turtle运动方法
    例10-19:应用circle方法绘制图形
    3、Turtle颜色和字体绘制方法
    例10-20:修改例10-19,给所绘图形填充颜色
    执行结果:
    例10-21:编写程序模拟时钟,要求时钟根据计算机系统时间实时动态更新。
    需要建立五个turtle对象:
    1个turtle: 绘制外表盘
    3个turle: 模拟表针行为
    1个turtle: 输出表盘上的文字
    模拟时钟程序过程:
    第一步:建立Turtle对象并初始化。
    表盘绘制Turtle对象
    文本输出Turtle对象
    3个指针Turtle对象
    第二步:静态表盘绘制
    第三步:根据时钟更新表针位置和时间信息
    说明:需要导入turtle库和datetime库
    表盘绘制函数SetupClock(radius) :
    跨越函数Skip(step):
    定义表针函数mkHand():
    注册Turtle形状命令:
    register_shap(name, shape=None)
    name:shape的名字,可以是一个gif图像
    shape:turtle形状,可以为空
    初始化函数Init():
    更新时钟函数Tick() :
    主函数main():
    源程序:
    例10-22:编写程序。根据文件data.txt中的数据,使用turtle库来动态绘制图形路径
    数据说明:
    第1列:路径前进像素数
    第2列:转动方向。0为左,1为右
    第3列:转动的角度
    第4—6列:绘制颜色的rgb值
    程序执行结果:
    程序实现的具体过程为:
    (1)使用import命令为程序引入turtle库
    (2)设置窗口信息和Turtle画笔
    (3)读取数据文件到列表result中
    (4)根据每一条数据记录进行绘制
    (5)画笔回到原点
    完整程序:
    例10-23:《雪景-Snowfall》绘制
    随机因素:
    雪花位置
    雪花颜色
    雪花大小
    花瓣数目
    地面灰色线条长短
    地面灰色线条位置
    因此,需要导入随机数模块
    主函数:
    snow()函数:
    ground()函数 :
    源程序:
    课堂练习二:
    课堂练习二
     

    相关PPT

    Python基础9ppt:这是Python基础9ppt,包括了处理基本的图像,如何载入图像,wxPython 支持的图像文件格式,创建image(图像)对象,创建bitmap(位图)对象,图像读取,GetData,wx.Image 的图像处理方法,设置alpha值来指定一个透明的图像等内容,欢迎点击下载。
    Python基础5ppt:这是Python基础5ppt,包括了输入/输出,raw_input,文件,打开文件,读写文件,文件中的内容定位,中文处理等内容,欢迎点击下载。
    Python基础7ppt:这是Python基础7ppt,包括了wxPython,创建最小的空的wxPython程序,创建最小的空的wxPython程序,wxPython,导入 wxPython,使用应用程序和框架工作,子类化wxPython application类,创建一个应用程序实例并进入它的主事件循环,实例,初始化等内容,欢迎点击下载。
    《第十章Python的GUI编程ppt》是由用户Birdy-sea于2018-05-15上传,属于培训教程PPT。

    相关PPT

    热门推荐

    热门下载

    举报