Python-3基础教程-第8章tkinter-GUI编程课件.ppt
《Python-3基础教程-第8章tkinter-GUI编程课件.ppt》由会员分享,可在线阅读,更多相关《Python-3基础教程-第8章tkinter-GUI编程课件.ppt(79页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Python 3基础教程出版社或系部名称主讲:授课教师 姓名8.1 tkinter8.1 tkinter编程基础编程基础 在在PythonPython中编写中编写GUIGUI程序并不复杂,本节将学习使用程序并不复杂,本节将学习使用tkintertkinter编写编写GUIGUI程序程序的基本步骤和方法。的基本步骤和方法。本节主要讲述:本节主要讲述:第一个第一个tkinterGUItkinterGUI程序程序 组件打包组件打包 添加按钮和事件处理函数添加按钮和事件处理函数 PackerPacker布局布局 GridGrid布局布局 PlacePlace布局布局 使用框架使用框架8.1.1 8.1
2、.1 第一个第一个tkinterGUItkinterGUI程序程序1.tkinter GUI1.tkinter GUI程序的基本结构程序的基本结构tkinter GUItkinter GUI程序的基本结构通常包含下面几个部分:程序的基本结构通常包含下面几个部分:导入导入tkintertkinter模块模块创建主窗口:所有组件默认情况下都以主窗口作为容器。创建主窗口:所有组件默认情况下都以主窗口作为容器。创建组件实例:调用组件类创建组件实例时,第一个参数指明了主创建组件实例:调用组件类创建组件实例时,第一个参数指明了主窗口。窗口。打包组件:打包的组件可以显示在窗口中,否则不会显示。打包组件:打包
3、的组件可以显示在窗口中,否则不会显示。开始事件循环:开始事件循环后,窗口等待响应用户操作。开始事件循环:开始事件循环后,窗口等待响应用户操作。mainloop()mainloop()不是必须的。在交互模式下运行不是必须的。在交互模式下运行GUIGUI程序时,如程序时,如果有果有mainloop()mainloop(),程序运行结束后,才会返回提示符。如,程序运行结束后,才会返回提示符。如果没有果没有mainloop()mainloop(),程序启动后,交互模式立即返回提示,程序启动后,交互模式立即返回提示符,但不会影响符,但不会影响GUIGUI程序窗口。程序窗口。2.py2.py还是还是.py
4、w?.pyw?GUIGUI程序文件扩展名可以是程序文件扩展名可以是.py.py或或.pyw.pyw。在在WindowsWindows中双击程序文件运行时,中双击程序文件运行时,.py.py文件文件在打开在打开GUIGUI窗口的同时,会显示系统命令提窗口的同时,会显示系统命令提示符窗口。示符窗口。.pyw.pyw文件运行时则不显示系统命令提示符窗文件运行时则不显示系统命令提示符窗口。口。3.3.需要创建主窗口吗?需要创建主窗口吗?窗口和框架都可作为组件的容器,容器也可嵌套容器。主窗口和框架都可作为组件的容器,容器也可嵌套容器。主窗口只有一个,它是其他组件和容器的容器。窗口只有一个,它是其他组件和
5、容器的容器。在在GUIGUI程序中,并不需要显示地创建主窗口。程序中,并不需要显示地创建主窗口。4.4.导入模块还是导入类导入模块还是导入类在导入模块时,访问模块中的类需要使用在导入模块时,访问模块中的类需要使用“tkinter.tkinter.”作作为限定词。为了方便和减少代码编写,可以有选择的导入为限定词。为了方便和减少代码编写,可以有选择的导入模块中需要的类,然后在代码中直接使用类。模块中需要的类,然后在代码中直接使用类。5.5.最简化的程序最简化的程序6.6.配置窗口和组件属性配置窗口和组件属性默认情况下,窗口标题为默认情况下,窗口标题为tktk,可调用窗口对象的,可调用窗口对象的ti
6、tle()title()方方法来设置标题。法来设置标题。组件的属性和属性值则以字典映射的形式来访问。组件的属性和属性值则以字典映射的形式来访问。8.1.2 8.1.2 组件打包组件打包1.1.设置组件位置设置组件位置在在pack()pack()方法中可使用方法中可使用sideside参数设置组件位参数设置组件位置,参数值可使用下面的常量:置,参数值可使用下面的常量:TOPTOP:窗口剩余空间最上方水平居中;:窗口剩余空间最上方水平居中;BOTTOMBOTTOM:窗口剩余空间最下方水平居中;:窗口剩余空间最下方水平居中;LEFTLEFT:窗口剩余空间最左侧垂直居中;:窗口剩余空间最左侧垂直居中;
7、RIGHTRIGHT:窗口剩余空间最右侧垂直居中。:窗口剩余空间最右侧垂直居中。2.2.组件拉伸组件拉伸在在pack()pack()方法中,若方法中,若expandexpand参数设置为参数设置为YESYES,表示组件可拉伸,此时,表示组件可拉伸,此时sideside参数被忽略。参数被忽略。若若expandexpand参数设置为参数设置为YESYES时,没有设置时,没有设置fillfill参数,则组件位于默认位置(参数,则组件位于默认位置(TOPTOP)。)。fillfill参数在参数在expandexpand参数设置为参数设置为YESYES时才有效,时才有效,可设置为下面的常量:可设置为下面
8、的常量:X X:水平拉伸:水平拉伸Y Y:垂直拉伸:垂直拉伸BOTHBOTH:水平垂直都拉伸:水平垂直都拉伸8.1.38.1.3添加按钮和事件处理函数添加按钮和事件处理函数还可以使用还可以使用bind()bind()方法来为组件的事件绑定方法来为组件的事件绑定处理函数。常用事件名称如下。处理函数。常用事件名称如下。Button-1Button-1:单击鼠标左键:单击鼠标左键Button-3Button-3:单击鼠标右键:单击鼠标右键Double-1Double-1:双击鼠标左键:双击鼠标左键B1-MotionB1-Motion:按下鼠标左键拖动:按下鼠标左键拖动ReturnReturn:按下【
9、:按下【EnterEnter】键】键KeyPressKeyPress:按下键盘字符或其他键:按下键盘字符或其他键UpUp:按下【:按下【】键】键8.1.4 Packer8.1.4 Packer布局布局在调用在调用pack()pack()方法打包组件时,组件在容器(窗口和框架方法打包组件时,组件在容器(窗口和框架是典型的容器)中的布局方式可称为是典型的容器)中的布局方式可称为PackerPacker布局。布局。PackerPacker布局是布局是TkTk的一种几何管理器,它通过相对位置控制组件在的一种几何管理器,它通过相对位置控制组件在容器中的位置。因为组件的位置是相对的,当容器大小发容器中的位
10、置。因为组件的位置是相对的,当容器大小发生变化时(例如调整窗口大小),组件会跟随容器自动调生变化时(例如调整窗口大小),组件会跟随容器自动调整位置。整位置。组件在创建后,若没有指定布局管理器,组件是不会显示组件在创建后,若没有指定布局管理器,组件是不会显示在容器中的。调用在容器中的。调用pack()pack()方法意味着为组件指定方法意味着为组件指定PackerPacker布布局管理器,此时组件才会在容器中显示。局管理器,此时组件才会在容器中显示。组件总是按打包的先后顺序出现在容器中,当容器尺寸变组件总是按打包的先后顺序出现在容器中,当容器尺寸变小时(如缩放窗口),后打包的组件总是先看不到。小
11、时(如缩放窗口),后打包的组件总是先看不到。组件的位置通常由组件的位置通常由sideside或或anchoranchor参数决定。打包组件时,参数决定。打包组件时,后打包的组件只能在当前剩余空间内确定其位置。后打包的组件只能在当前剩余空间内确定其位置。anchoranchor参数根据指南针方位来分配组件在容器中的位置,参数根据指南针方位来分配组件在容器中的位置,参数值可使用下面的常量:参数值可使用下面的常量:其他与其他与pack()pack()方法有关的常用参数如下。方法有关的常用参数如下。expandexpand:设置组件是否可以拉伸。默认不可拉伸,设置:设置组件是否可以拉伸。默认不可拉伸,
12、设置为常量为常量YESYES时可拉伸。时可拉伸。fillfill:expandexpand设置为设置为YESYES时有效,可设置为时有效,可设置为X X(水平方向(水平方向拉伸)、拉伸)、Y Y(垂直方向拉伸)或(垂直方向拉伸)或BOTHBOTH(水平垂直方向都(水平垂直方向都拉伸)。拉伸)。ipadxipadx或或ipadyipady:组件内部左右或上下边框预留空白宽度。:组件内部左右或上下边框预留空白宽度。padxpadx或或padypady:组件外部左右或上下边框预留空白宽度。:组件外部左右或上下边框预留空白宽度。8.1.5 Grid8.1.5 Grid布局布局采用采用pack()pac
13、k()方法打包组件时,组件所在容器采用方法打包组件时,组件所在容器采用PackerPacker布布局来组织组件。另一种布局方式是局来组织组件。另一种布局方式是GridGrid布局。调用组件的布局。调用组件的gridgrid()()方法,则表示组件所在的容器采用方法,则表示组件所在的容器采用GridGrid布局来组织组件。布局来组织组件。注意:在同一容器中,只能使用一种布局方式。注意:在同一容器中,只能使用一种布局方式。GridGrid布局可称为网格布局,它按照二维表格的形式,将容布局可称为网格布局,它按照二维表格的形式,将容器划分为若干行和若干列,行列所在位置为一个单元格,器划分为若干行和若干
14、列,行列所在位置为一个单元格,类似与类似与ExcelExcel表格。表格。在在grid()grid()方法中,用参数方法中,用参数rowrow设置组件所在的行,设置组件所在的行,columncolumn参参数设置组件所在的列。行列默认开始值为数设置组件所在的列。行列默认开始值为0 0,依次递增。行,依次递增。行和列的序号的大小表示了相对位置,数字越小表示位置越和列的序号的大小表示了相对位置,数字越小表示位置越靠前。靠前。grid()grid()方法通常用的其他参数如下。方法通常用的其他参数如下。rowspanrowspan:组件占用的行数。:组件占用的行数。columnspancolumnsp
15、an:组件占用的列数。:组件占用的列数。stickysticky:组件在单元格内的对齐方式,可用常量为:组件在单元格内的对齐方式,可用常量为:N N、S S、W W、E E、NWNW、SWSW、NENE、SESE和和CENTERCENTER,与,与pack()pack()方法方法的的anchoranchor参数值一致。参数值一致。ipadxipadx或或ipadyipady:组件内部左右或上下边框预留空白宽度。:组件内部左右或上下边框预留空白宽度。padxpadx或或padypady:组件外部左右或上下边框预留空白宽度。:组件外部左右或上下边框预留空白宽度。8.1.6 Place8.1.6 P
16、lace布局布局PlacePlace布局可以比布局可以比GridGrid和和PackerPacker布局更精确布局更精确控制组件在容器中的位置。控制组件在容器中的位置。在调用组件的在调用组件的place()place()方法时,使用方法时,使用PlacePlace布布局。局。PlacePlace布局可以布局可以GridGrid或者或者PackerPacker布局同时使布局同时使用。用。place()place()方法常用参数如下。方法常用参数如下。anchoranchor:指定组件在容器中的位置,默认为左上角(:指定组件在容器中的位置,默认为左上角(NWNW),可使用),可使用N N、S S、
17、W W、E E、NWNW、SWSW、NENE、SESE和和CENTERCENTER等常量。等常量。bordermodebordermode:指定在计算位置时,是否包含容器边界宽度,默认为:指定在计算位置时,是否包含容器边界宽度,默认为INSIDEINSIDE(要计算容器边界),(要计算容器边界),OUTSIDEOUTSIDE表示不计算容器边界。表示不计算容器边界。heightheight、widthwidth:指定组件的高度和宽度,默认单位为像素。:指定组件的高度和宽度,默认单位为像素。relheightrelheight、relwidthrelwidth:按容器高度和宽度的比例来指定组件的高
18、:按容器高度和宽度的比例来指定组件的高度和宽度,取值范围为度和宽度,取值范围为0.01.00.01.0。x x、y y:用绝对坐标指定组件的位置,坐标默认单位为像素。:用绝对坐标指定组件的位置,坐标默认单位为像素。relxrelx、rely:rely:按容器高度和宽度的比例来指定组件的位置,取值范按容器高度和宽度的比例来指定组件的位置,取值范围为围为0.01.00.01.0。8.1.7 8.1.7 使用框架使用框架框架(框架(FrameFrame)是一个容器,通常用于对组)是一个容器,通常用于对组件进行分组。件进行分组。框架常用选项如下。框架常用选项如下。bdbd:指定边框宽度。:指定边框宽度
19、。reliefrelief:指定边框样式,可用:指定边框样式,可用RAISEDRAISED(凸起)、(凸起)、SUNKENSUNKEN(凹陷)、(凹陷)、FLATFLAT(扁平,默认值)、(扁平,默认值)、RIDGERIDGE(脊(脊状)、状)、GROOVEGROOVE(凹槽)和(凹槽)和SOLIDSOLID(实线)。(实线)。widthwidth、heightheight:设置宽度和高度,通常被忽略。容器:设置宽度和高度,通常被忽略。容器通常根据内容组件的大小自动调整自身大小。通常根据内容组件的大小自动调整自身大小。8.2 tkinter8.2 tkinter组件组件 在前面的内容中,使用了
20、标签、按钮和框架等组件,本节介绍其他一些在前面的内容中,使用了标签、按钮和框架等组件,本节介绍其他一些常用组件。常用组件。本节主要讲述:本节主要讲述:组件通用属性设置组件通用属性设置-标签组件标签组件LabelLabel按钮组件按钮组件ButtonButton-输入组件输入组件EntryEntry列表框组件列表框组件ListboxListbox-复选框组件复选框组件CheckbuttonCheckbutton单选按钮组件单选按钮组件RadiobuttonRadiobutton-旋转框组件旋转框组件SpinboxSpinbox滚动条组件滚动条组件ScrollbarScrollbar-标签框架标签
21、框架LabelFrameLabelFrame文本框组件文本框组件TextText-画布组件画布组件CanvasCanvas顶层窗口组件顶层窗口组件ToplevelToplevel-菜单组件菜单组件MenuMenu8.2.1 8.2.1 组件通用属性设置组件通用属性设置tkintertkinter模块中的组件可使用一组通用的属模块中的组件可使用一组通用的属性设置来控制组件的外观和行为。性设置来控制组件的外观和行为。通常,调用组件的通常,调用组件的config()config()方法来设置属性,方法来设置属性,在在config()config()方法中使用与属性同名的参数来方法中使用与属性同名的参
22、数来设置属性值。设置属性值。当然,在调用组件类创建组件的实例对象时,当然,在调用组件类创建组件的实例对象时,也可通过参数设置对应的属性。也可通过参数设置对应的属性。1.1.尺寸相关设置尺寸相关设置在设置组件和尺寸有关的属性(如边框宽度在设置组件和尺寸有关的属性(如边框宽度bdbd、容器的宽、容器的宽度度widthwidth或高度或高度heightheight等)时,若设置为一个整数值,则默等)时,若设置为一个整数值,则默认单位为像素。认单位为像素。尺寸单位可使用:尺寸单位可使用:c c(里面)、(里面)、m m(微米)、(微米)、i i(英寸)、(英寸)、p p(点,(点,1 1点约点约727
23、2分之一英寸)。带单位时,需使用字符串分之一英寸)。带单位时,需使用字符串表示尺寸。表示尺寸。2.2.颜色相关设置颜色相关设置设置颜色相关的属性时,如背景色、前景色等,属性值为设置颜色相关的属性时,如背景色、前景色等,属性值为一个字符串,字符串中为标准颜色名称或以符号一个字符串,字符串中为标准颜色名称或以符号“#”开头开头的的RGBRGB颜色值。颜色值。标准颜色名称可使用标准颜色名称可使用whitewhite、blackblack、redred、greengreen、blueblue、cyancyan、yellowyellow、magentamagenta等。等。使用使用“#”开头的开头的RG
24、BRGB颜色值时,可使用下面颜色值时,可使用下面3 3种格式:种格式:#rgb#rgb:每种颜色用:每种颜色用1 1位位1616进制数表示。进制数表示。#rrggbb#rrggbb:每种颜色用:每种颜色用2 2位位1616进制数表示。进制数表示。#rrrgggbbb#rrrgggbbb:每种颜色用:每种颜色用3 3位位1616进制数表示。进制数表示。3.3.字体相关设置字体相关设置组件的组件的fontfont属性用于设置字体名称、字体大小和字体特征属性用于设置字体名称、字体大小和字体特征等。等。fontfont属性通常为一个三元组,基本格式为属性通常为一个三元组,基本格式为“(family,s
25、ize,special)(family,size,special)”。familyfamily为表示字体名称的字符串为表示字体名称的字符串,sizesize为表示字体大小的为表示字体大小的整数整数,sizesize为正整数时,字体大小单位为点;为正整数时,字体大小单位为点;sizesize为正整为正整数时,字体大小单位为像素。数时,字体大小单位为像素。specialspecial为表示字体特征的字符串,可使用关键字表示字体为表示字体特征的字符串,可使用关键字表示字体特征:特征:normalnormal(正常)、(正常)、boldbold(粗体)、(粗体)、italicitalic(斜体)、(斜
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 基础教程 tkinter GUI 编程 课件
限制150内