第十章Python的GUI编程..ppt
《第十章Python的GUI编程..ppt》由会员分享,可在线阅读,更多相关《第十章Python的GUI编程..ppt(107页珍藏版)》请在咨信网上搜索。
1、2024/5/22 周三1Python语言编程导论语言编程导论第十章第十章 Python的的GUI编编程程张晋连张晋连 2016.112016.11内容提要内容提要概述概述GUI程序开发简介程序开发简介Tkinter与主要组件与主要组件Turtle库简介库简介2024/5/22 周三2一、概述一、概述使用图形用户界面(使用图形用户界面(GUI),可以使程序更友好。),可以使程序更友好。Python作为一种作为一种“胶水性胶水性”语言,提供了众多语言,提供了众多GUI开发库的绑定,适合快速开发开发库的绑定,适合快速开发GUI。目前大部分开发库还不支持目前大部分开发库还不支持Python 3,且库
2、的更,且库的更新速度不是很快。如果使用的是新速度不是很快。如果使用的是Python 3,可选,可选择的开发库就不是很多了。择的开发库就不是很多了。目前常用的开发库有:目前常用的开发库有:Python内置的内置的Tkinter、Graphics、Turtle等,以及非常强大的等,以及非常强大的PyQT等。等。如果使用的是如果使用的是Python 2,还有如,还有如wxPython、PyGTK、PMW等开发库可以选择。等开发库可以选择。2024/5/22 周三3本章简要介绍以下图形库:本章简要介绍以下图形库:TkinterPython 标准标准GUI Turtlepython内置的图形库。内置的图
3、形库。2024/5/22 周三4二、二、GUI程序开发简介程序开发简介日常使用的大量客户端程序都属于日常使用的大量客户端程序都属于GUI程程序,即在一个界面上有很多功能块,包括:序,即在一个界面上有很多功能块,包括:标签、按钮、输入框、菜单等。标签、按钮、输入框、菜单等。开发开发GUI程序,首先需要有一块空白画面,程序,首先需要有一块空白画面,然后在其上划分出不同的区域,放上不同然后在其上划分出不同的区域,放上不同的模块,最后完成每一个模块的功能。的模块,最后完成每一个模块的功能。2024/5/22 周三5GUI程序开发基本程序开发基本步骤和过程:步骤和过程:首先要有底层的根窗口对象,在其基础
4、上创建一个首先要有底层的根窗口对象,在其基础上创建一个个小窗口对象。每一个窗口都是一个容器,可将所个小窗口对象。每一个窗口都是一个容器,可将所需的组件置于其中。每种需的组件置于其中。每种GUI开发库都拥有大量的开发库都拥有大量的组件,一个组件,一个GUI程序就是由各种不同功能的组件组程序就是由各种不同功能的组件组成的,而根窗口对象则包含了所有组件。成的,而根窗口对象则包含了所有组件。组件本身也可以作为一个容器,它可以包含其他组组件本身也可以作为一个容器,它可以包含其他组件,如下拉框。这种包含其他组件的称为父组件,件,如下拉框。这种包含其他组件的称为父组件,反之,包含在其他组件中的组件称为子组件
5、。这是反之,包含在其他组件中的组件称为子组件。这是一种相对的概念,对于有着多层包含的情况,某组一种相对的概念,对于有着多层包含的情况,某组件的父组件一般指的是直接包含它的组件。件的父组件一般指的是直接包含它的组件。2024/5/22 周三62024/5/22 周三7构建出了构建出了GUI程序的每一个组件,只完成了程序程序的每一个组件,只完成了程序的界面,但此时只能看不能用,需要给每一个组的界面,但此时只能看不能用,需要给每一个组件添加对应的功能。件添加对应的功能。使用使用GUI程序时,会进行各种操作,如鼠标移动,程序时,会进行各种操作,如鼠标移动,按下或松开鼠标键,按下键盘按键等,这些操作按下
6、或松开鼠标键,按下键盘按键等,这些操作称为事件。每个组件对应着一些行为,如在文本称为事件。每个组件对应着一些行为,如在文本框中输入文本,单击按钮等,这些也称为事件。框中输入文本,单击按钮等,这些也称为事件。GUI程序启动的时候就一直监控这些事件,当某程序启动的时候就一直监控这些事件,当某个事件发生的时候,就进行对应的处理并返回相个事件发生的时候,就进行对应的处理并返回相应的结果。因此,应的结果。因此,GUI程序是由这一整套事件驱程序是由这一整套事件驱动的,这个过程称为事件驱动处理。动的,这个过程称为事件驱动处理。2024/5/22 周三8一个事件发生后,一个事件发生后,GUI程序捕获该事件、作
7、出对程序捕获该事件、作出对应的处理并返回结果的过程称为回调。如计算器应的处理并返回结果的过程称为回调。如计算器程序,单击了程序,单击了“=”按钮之后,便产生了一个事件,按钮之后,便产生了一个事件,需要计算最终的结果,程序便开始对算式进行计需要计算最终的结果,程序便开始对算式进行计算,返回最终结果并显示出来。这个计算并显示算,返回最终结果并显示出来。这个计算并显示结果的过程即为回调。结果的过程即为回调。当为程序需要的每一个事件都添加完相应的回调当为程序需要的每一个事件都添加完相应的回调处理之后,整个处理之后,整个GUI就完成了。就完成了。三三、Tkinter与主要组件与主要组件Tk是是Pytho
8、n默认的工具集(即图形库),默认的工具集(即图形库),Tkinter是是Tk的的Python接口,通过接口,通过Tkinter可可以方便地调用以方便地调用Tk进行图形界面开发。进行图形界面开发。Tk与其他开发库相比,不是最强大的,模块工具与其他开发库相比,不是最强大的,模块工具也不是非常的丰富。但它非常简单,所提供的功也不是非常的丰富。但它非常简单,所提供的功能开发一般的应用也完全够用了,且能在大部分能开发一般的应用也完全够用了,且能在大部分平台上运行。平台上运行。Python自带的自带的IDEL也是用也是用Tkinter开发的。开发的。Tkinter的的不足之处不足之处是是缺少合适的可视化界
9、面设缺少合适的可视化界面设计工具,需要通过代码来完成窗口设计和元素布计工具,需要通过代码来完成窗口设计和元素布局局。2024/5/22 周三92024/5/22 周三10Tkinter中提供了较为丰富的控件,完全能满足中提供了较为丰富的控件,完全能满足基本的基本的GUI程序的需求。程序的需求。由于由于Tkinter模块已经在模块已经在Python中内置,所以中内置,所以在使用之前,只需将其导入即可。在使用之前,只需将其导入即可。两种导入方式为:两种导入方式为:import tkinter as tk导入导入tkinter,但没,但没引入任何组件,在使用时需要使用引入任何组件,在使用时需要使用t
10、k前缀,如需要前缀,如需要引入按钮,则表示为:引入按钮,则表示为:tk.Button。from tkinter import*将将tkinter中的所中的所有组件一次性引入。有组件一次性引入。1、在程序中使用、在程序中使用Tkinter利用利用Tkinter模块来引用模块来引用Tk构建和运行构建和运行GUI程序,通常需要程序,通常需要5步:步:导入导入Tkinter模块;模块;创建一个顶层窗口;创建一个顶层窗口;在顶层窗口的基础上构建所需要的在顶层窗口的基础上构建所需要的GUI模块和模块和功能;功能;将每一个模块与底层程序代码关联起来;将每一个模块与底层程序代码关联起来;执行主循环。执行主循环
11、。2024/5/22 周三11Tkinter主要组件简介主要组件简介组件组件功能功能Button按钮。类似标签,但提供额外功能,如鼠标按下、释放及键盘操作事件按钮。类似标签,但提供额外功能,如鼠标按下、释放及键盘操作事件Canvas画布。提供绘图功能(直线、椭圆、多边形、矩形),可以包含图形或位图画布。提供绘图功能(直线、椭圆、多边形、矩形),可以包含图形或位图Checkbutton选择按钮。一组方框,可以选择其中的任意个选择按钮。一组方框,可以选择其中的任意个Radiobutton单选按钮。一组方框,其中只有一个可被选择单选按钮。一组方框,其中只有一个可被选择Entry文本框。单行文字域,用
12、来收集键盘输入文本框。单行文字域,用来收集键盘输入Frame框架。包含其他组件的纯容器框架。包含其他组件的纯容器Label标签。用来显示文字或图片标签。用来显示文字或图片Listbox列表框。一个选项列表,用户可以从中选择列表框。一个选项列表,用户可以从中选择Menu菜单。单击后弹出一个选项列表,用户可以从中选择菜单。单击后弹出一个选项列表,用户可以从中选择Menubutton菜单按钮。用来包含菜单的组件(有下拉式、层叠式)菜单按钮。用来包含菜单的组件(有下拉式、层叠式)Message消息框。类似于标签,但可以显示多行文本消息框。类似于标签,但可以显示多行文本Scale进度条。线性进度条。线性
13、“滑块滑块”组件,可设定起始值和结束值,显示当前位置的精确值组件,可设定起始值和结束值,显示当前位置的精确值Scrollbar滚动条。对其支持的组件(文本域、画布、列表框、文本框)提供滚动功能滚动条。对其支持的组件(文本域、画布、列表框、文本框)提供滚动功能Text文本域。多行文字区域,可用来收集(或显示)用户输入的文字文本域。多行文字区域,可用来收集(或显示)用户输入的文字Toplevel顶级。类似框架,但提供一个独立的窗口容器。顶级。类似框架,但提供一个独立的窗口容器。12组件的共同属性:组件的共同属性:dimensions:尺寸:尺寸 colors:颜色:颜色 fonts:字体:字体 a
14、nchors:锚:锚 relief styles:浮雕式:浮雕式 bitmaps:显示位图:显示位图 cursors:光标的外形:光标的外形 说明:每种组件还有其各自特有的属性说明:每种组件还有其各自特有的属性2024/5/22 周三13注意:注意:Tk使用了一种包管理器来管理所有的组件,当定使用了一种包管理器来管理所有的组件,当定义完组件之后,需要调用义完组件之后,需要调用pack()方法来控制组方法来控制组件的显示方式,若不调用件的显示方式,若不调用pack()方法,组件将方法,组件将不会显示。不会显示。在交互环境下,编写在交互环境下,编写Tkinter测试代码时,运行测试代码时,运行过过
15、Tk()(创建顶层窗口的函数)之后即进入主循(创建顶层窗口的函数)之后即进入主循环,可以看到顶层窗口。而若是运行环,可以看到顶层窗口。而若是运行py文件,一文件,一定要调用定要调用mainloop()方法进入主循环,方可看方法进入主循环,方可看到顶层窗口。到顶层窗口。2024/5/22 周三14创建创建GUI应用程序窗口代码应用程序窗口代码模板:模板:2024/5/22 周三152、顶层窗口、顶层窗口顶层窗口也称为根窗口。顶层窗口也称为根窗口。顶层窗口实际上是一个普通窗口,包括一顶层窗口实际上是一个普通窗口,包括一个标题栏和窗口管理器所提供的窗口装饰个标题栏和窗口管理器所提供的窗口装饰部分,如
16、最大化按钮等。部分,如最大化按钮等。在一个在一个Tkinter开发的应用程序中,只需开发的应用程序中,只需要创建一个顶层窗口即可,且此窗口的创要创建一个顶层窗口即可,且此窗口的创建必须是在其他窗口创建之前。建必须是在其他窗口创建之前。2024/5/22 周三16例例10-1:创建顶层窗口:创建顶层窗口2024/5/22 周三17执行结果:执行结果:3、标签、标签标签组件可以用来显示图片和文本,通过标签组件可以用来显示图片和文本,通过在文本中添加换行符来控制换行,也可以在文本中添加换行符来控制换行,也可以通过控制组件的大小实现自动换行。通过控制组件的大小实现自动换行。例例10-2:使用标签(:使
17、用标签(Label)编写一个程)编写一个程序,在程序主体中显示序,在程序主体中显示“Hello World!”。2024/5/22 周三18程序及执行结果:程序及执行结果:2024/5/22 周三19Label组件常用参数组件常用参数参数参数描述描述height组件的高度(所占行数)组件的高度(所占行数)width组件的宽度(所占字符个数)组件的宽度(所占字符个数)fg前景字体颜色前景字体颜色bg背景颜色背景颜色justify多行文本的对齐方式,可选参数为:多行文本的对齐方式,可选参数为:LEFT、CENTER、RIGHTpadx文本左右两侧的空格数(默认为文本左右两侧的空格数(默认为1)pa
18、dy文本上下两侧的空格数(默认为文本上下两侧的空格数(默认为1)2024/5/22 周三20增加了参数后的程序及执行结果:增加了参数后的程序及执行结果:2024/5/22 周三214、框架、框架框架(框架(Frame)相对于其他组件而言,它)相对于其他组件而言,它只是个容器,因为它没有方法,但它可以只是个容器,因为它没有方法,但它可以捕获键盘和鼠标的事件来进行回调。捕获键盘和鼠标的事件来进行回调。框架一般用作包含一组控件的主体,且可框架一般用作包含一组控件的主体,且可以定制外观。以定制外观。2024/5/22 周三22例例10-3:创建不同样式的框架:创建不同样式的框架2024/5/22 周三
19、235、按钮、按钮按钮组件(按钮组件(Button)是)是tkinter最常用的图形组最常用的图形组件之一,通过件之一,通过Button可以方便地与用户进行交可以方便地与用户进行交互。互。严格地说,按钮(严格地说,按钮(Button)也可被看作标签,)也可被看作标签,只是它可以捕获键盘和鼠标事件。只是它可以捕获键盘和鼠标事件。按钮可以禁用,禁用之后的按钮不能进行单击等按钮可以禁用,禁用之后的按钮不能进行单击等任何操作。任何操作。如果将按钮放进如果将按钮放进TAB群中,就可以使用群中,就可以使用TAB键来键来进行跳转和定位。进行跳转和定位。2024/5/22 周三24例例10-4:创建按钮:创建
20、按钮示例示例2024/5/22 周三25Button组件常用参数组件常用参数参数参数描述描述height组件的高度(所占行数)组件的高度(所占行数)width组件的宽度(所占字符个数)组件的宽度(所占字符个数)fg前景字体颜色前景字体颜色bg背景颜色背景颜色activebackground按钮按下时的背景颜色按钮按下时的背景颜色activeforeground按钮按下时的前景颜色按钮按下时的前景颜色justify多行文本的对齐方式,可选参数为:多行文本的对齐方式,可选参数为:LEFT、CENTER、RIGHTpadx文本左右两侧的空格数(默认为文本左右两侧的空格数(默认为1)pady文本上下两
21、侧的空格数(默认为文本上下两侧的空格数(默认为1)state设置组件状态,默认为设置组件状态,默认为NORMAL,可设置为:,可设置为:DISABLED禁用组件禁用组件(必须大写)(必须大写)2024/5/22 周三26增加了参数后的程序和执行结果:增加了参数后的程序和执行结果:2024/5/22 周三27按下按下“退出退出”按钮:按钮:6、输入框、输入框一个一个GUI程序,接收用户的输入几乎是必不可少程序,接收用户的输入几乎是必不可少的。输入框(的。输入框(Entry)组件就是用来接收用户输)组件就是用来接收用户输入的最基本的组件。入的最基本的组件。可以为输入框设置默认值,也可以禁止用户输入
22、。可以为输入框设置默认值,也可以禁止用户输入。如果禁止输入,用户就不能改变输入框中的值了。如果禁止输入,用户就不能改变输入框中的值了。当用户输入的内容一行显示不下的时候,输入框当用户输入的内容一行显示不下的时候,输入框会自动生成滚动条。会自动生成滚动条。2024/5/22 周三28例例10-5:创建输入框:创建输入框示例示例2024/5/22 周三29Entry参数组件常用参数参数组件常用参数参数参数描述描述height组件的高度(所占行数)组件的高度(所占行数)width组件的宽度(所占字符个数)组件的宽度(所占字符个数)fg前景字体颜色前景字体颜色bg背景颜色背景颜色show将将Entry
23、框中的文本替换为指定字符,用于输入框中的文本替换为指定字符,用于输入密码等,如设置密码等,如设置 show=*state设置组件状态,默认为设置组件状态,默认为NORMAL,可设置为:,可设置为:DISABLED禁用组件,禁用组件,READONLY只读只读2024/5/22 周三30例例10-6:将摄氏度转换为华氏度:将摄氏度转换为华氏度2024/5/22 周三31程序执行:程序执行:2024/5/22 周三327、单选按钮、单选按钮单选按钮(单选按钮(Radiobutton)是一组排他性)是一组排他性的选择框,只能从该组中选择一个选项,的选择框,只能从该组中选择一个选项,当选择了其中一项之后
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十 Python GUI 编程
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。