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还是还是.
4、pyw?.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,可调用窗口对象的,可调用窗口对
6、象的title()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:按下鼠标左键拖动:按下鼠标左键拖动 Ret
9、urnReturn:按下【:按下【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布局
13、布局 采用采用pack()pack()方法打包组件时,组件所在容器采用方法打包组件时,组件所在容器采用PackerPacker布布局来组织组件。另一种布局方式是局来组织组件。另一种布局方式是GridGrid布局。调用组件的布局。调用组件的grid()grid()方法,则表示组件所在的容器采用方法,则表示组件所在的容器采用GridGrid布局来组织布局来组织组件。注意:在同一容器中,只能使用一种布局方式。组件。注意:在同一容器中,只能使用一种布局方式。GridGrid布局可称为网格布局,它按照二维表格的形式,将容布局可称为网格布局,它按照二维表格的形式,将容器划分为若干行和若干列,行列所在位置为
14、一个单元格,器划分为若干行和若干列,行列所在位置为一个单元格,类似与类似与ExcelExcel表格。表格。在在grid()grid()方法中,用参数方法中,用参数rowrow设置组件所在的行,设置组件所在的行,columncolumn参参数设置组件所在的列。行列默认开始值为数设置组件所在的列。行列默认开始值为0 0,依次递增。行,依次递增。行和列的序号的大小表示了相对位置,数字越小表示位置越和列的序号的大小表示了相对位置,数字越小表示位置越靠前。靠前。grid()grid()方法通常用的其他参数如下。方法通常用的其他参数如下。rowspanrowspan:组件占用的行数。:组件占用的行数。co
15、lumnspancolumnspan:组件占用的列数。:组件占用的列数。stickysticky:组件在单元格内的对齐方式,可用常量为:组件在单元格内的对齐方式,可用常量为:N N、S S、W W、E E、NWNW、SWSW、NENE、SESE和和CENTERCENTER,与,与pack()pack()方法方法的的anchoranchor参数值一致。参数值一致。ipadxipadx或或ipadyipady:组件内部左右或上下边框预留空白宽度:组件内部左右或上下边框预留空白宽度。padxpadx或或padypady:组件外部左右或上下边框预留空白宽度。:组件外部左右或上下边框预留空白宽度。8.1
16、.6 Place8.1.6 Place布局布局 PlacePlace布局可以比布局可以比GridGrid和和PackerPacker布局更精确布局更精确控制组件在容器中的位置。控制组件在容器中的位置。在调用组件的在调用组件的place()place()方法时,使用方法时,使用PlacePlace布布局。局。PlacePlace布局可以布局可以GridGrid或者或者PackerPacker布局同时使布局同时使用。用。place()place()方法常用参数如下。方法常用参数如下。anchoranchor:指定组件在容器中的位置,默认为左上角(:指定组件在容器中的位置,默认为左上角(NWNW),
17、可使用),可使用N N、S S、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)是一个容器,通常用于对组)是一个容器,通常用于对组件进行分组。件进行分组。框架常用选项如下。框架常用选项如下。bd
19、bd:指定边框宽度。:指定边框宽度。reliefrelief:指定边框样式,可用:指定边框样式,可用RAISEDRAISED(凸起)、(凸起)、SUNKENSUNKEN(凹陷)、(凹陷)、FLATFLAT(扁平,默认值)、(扁平,默认值)、RIDGERIDGE(脊状)、(脊状)、GROOVEGROOVE(凹槽)和(凹槽)和SOLIDSOLID(实线)。(实线)。widthwidth、heightheight:设置宽度和高度,通常被忽略。容器:设置宽度和高度,通常被忽略。容器通常根据内容组件的大小自动调整自身大小。通常根据内容组件的大小自动调整自身大小。8.2 tkinter8.2 tkinte
20、r组件组件 在前面的内容中,使用了标签、按钮和框架等组件,本节介绍其他一些在前面的内容中,使用了标签、按钮和框架等组件,本节介绍其他一些常用组件。常用组件。本节主要讲述:本节主要讲述:组件通用属性设置组件通用属性设置-标签组件标签组件LabelLabel 按钮组件按钮组件ButtonButton-输入组件输入组件EntryEntry 列表框组件列表框组件ListboxListbox-复选框组件复选框组件CheckbuttonCheckbutton 单选按钮组件单选按钮组件RadiobuttonRadiobutton-旋转框组件旋转框组件SpinboxSpinbox 滚动条组件滚动条组件Scro
21、llbarScrollbar-标签框架标签框架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(英寸)
23、、(英寸)、p p(点,(点,1 1点约点约7272分之一英寸)。带单位时,需使用字符串表分之一英寸)。带单位时,需使用字符串表示尺寸。示尺寸。2.2.颜色相关设置颜色相关设置 设置颜色相关的属性时,如背景色、前景色等,属性值为设置颜色相关的属性时,如背景色、前景色等,属性值为一个字符串,字符串中为标准颜色名称或以符号一个字符串,字符串中为标准颜色名称或以符号“#”开头开头的的RGBRGB颜色值。颜色值。标准颜色名称可使用标准颜色名称可使用whitewhite、blackblack、redred、greengreen、blueblue、cyancyan、yellowyellow、magenta
24、magenta等。等。使用使用“#”开头的开头的RGBRGB颜色值时,可使用下面颜色值时,可使用下面3 3种格式:种格式:#rgb#rgb:每种颜色用:每种颜色用1 1位位1616进制数表示。进制数表示。#rrggbb#rrggbb:每种颜色用:每种颜色用2 2位位1616进制数表示。进制数表示。#rrrgggbbb#rrrgggbbb:每种颜色用:每种颜色用3 3位位1616进制数表示。进制数表示。3.3.字体相关设置字体相关设置 组件的组件的fontfont属性用于设置字体名称、字体大小和字体特征属性用于设置字体名称、字体大小和字体特征等。等。fontfont属性通常为一个三元组,基本格式
25、为属性通常为一个三元组,基本格式为“(family,size,special)(family,size,special)”。familyfamily为表示字体名称的字符串为表示字体名称的字符串,sizesize为表示字体大小的为表示字体大小的整数整数,sizesize为正整数时,字体大小单位为点;为正整数时,字体大小单位为点;sizesize为正整为正整数时,字体大小单位为像素。数时,字体大小单位为像素。specialspecial为表示字体特征的字符串,可使用关键字表示字体为表示字体特征的字符串,可使用关键字表示字体特征:特征:normalnormal(正常)、(正常)、boldbold(粗
26、体)、(粗体)、italicitalic(斜体)(斜体)、underlineunderline(加下划线)或(加下划线)或overstrikeoverstrike(加删除线)(加删除线)4.4.显示位图显示位图 bitmapbitmap属性用于设置在组件中显示的预设值的位图,预设属性用于设置在组件中显示的预设值的位图,预设值的位图名称有:值的位图名称有:errorerror、gray75gray75、gray50gray50、gray25gray25、gray12gray12、hourglasshourglass、infoinfo、questheadquesthead、questionques
27、tion和和warningwarning。5.5.显示图片显示图片 在在WindowsWindows系统中,可调用系统中,可调用PhotoImage()PhotoImage()类来引用文件中的类来引用文件中的图片,然后在组件中设置为图片,然后在组件中设置为imageimage属性值,将图片显示在组属性值,将图片显示在组件中。件中。PhotoImage()PhotoImage()类支持类支持.gif.gif、.png.png等格式的图片文件等格式的图片文件。6.6.使用控制变量使用控制变量 控制变量是一种特殊对象,它和组件关联在一起。例如,控制变量是一种特殊对象,它和组件关联在一起。例如,将控制
28、变量与一组单选按钮关联时,改变单选按钮选择时将控制变量与一组单选按钮关联时,改变单选按钮选择时,控制变量的值随之改变;反之,改变控制变量的值,对,控制变量的值随之改变;反之,改变控制变量的值,对应值的单选按钮被选中。同样,控制变量与输入组件关联应值的单选按钮被选中。同样,控制变量与输入组件关联时,控制变量的值和输入组件中的文本也会关联变化。时,控制变量的值和输入组件中的文本也会关联变化。tkintertkinter模块提供了模块提供了4 4种控制变量:布尔型、双精度、整数种控制变量:布尔型、双精度、整数和字符串和字符串 在下面的例子中,窗口显示一个标签和一个按钮,单击按在下面的例子中,窗口显示
29、一个标签和一个按钮,单击按钮改变标签显示内容,其中使用了控制变量来改变标签显钮改变标签显示内容,其中使用了控制变量来改变标签显示内容示内容:8.2.2 8.2.2 标签组件标签组件LabelLabel 标签用于显示不可修改的文本、图片或者图文混排内容。标签用于显示不可修改的文本、图片或者图文混排内容。tkinter.Labeltkinter.Label类用于创建标签。类用于创建标签。标签常用属性如下。标签常用属性如下。activebackgroundactivebackground:鼠标单击组件时,组件的背景颜色。:鼠标单击组件时,组件的背景颜色。activeforegroundactivef
30、oreground:鼠标单击组件时,组件的前景颜色。:鼠标单击组件时,组件的前景颜色。anchoranchor:设置文本在组件内部的位置,可使用:设置文本在组件内部的位置,可使用N N、S S、W W、E E、NWNW、SWSW、NENE、SESE和和CENTERCENTER等常量。等常量。bgbg、backgroundbackground:设置背景颜色。:设置背景颜色。bitmapbitmap:设置组件显示的位图。:设置组件显示的位图。bdbd、borderwidthborderwidth:设置边框宽度。:设置边框宽度。compoundcompound:在同时显示图片和文字时,设置图片相对于
31、文本的位置,:在同时显示图片和文字时,设置图片相对于文本的位置,可使用的位置常量:可使用的位置常量:LEFTLEFT(图片在左侧)、(图片在左侧)、RIGHTRIGHT(图片在右侧)、(图片在右侧)、CENTERCENTER(图片在中间)、(图片在中间)、BOTTOMBOTTOM(图片在下侧)、(图片在下侧)、TOPTOP(图片在上方)(图片在上方)等。等。cursorcursor:设置鼠标指针样式。:设置鼠标指针样式。disabledforegrounddisabledforeground:当组件的:当组件的statestate属性设置为属性设置为DISABLEDDISABLED时的前景颜时
32、的前景颜色。色。fontfont:设置字体。:设置字体。fgfg、foregroundforeground:设置前景色。:设置前景色。imageimage:设置显示的图片。:设置显示的图片。justifyjustify:在显示多行文字时,设置文本对齐方式:在显示多行文字时,设置文本对齐方式:LEFTLEFT(左对齐)、(左对齐)、RIGHTRIGHT(右对齐)或(右对齐)或CENTERCENTER(居中对齐)。(居中对齐)。padxpadx:组件内文本左右的预留空白宽度,默认值为:组件内文本左右的预留空白宽度,默认值为1 1(像素)。(像素)。padypady:组件内文本上下的预留空白宽度,默
33、认值为:组件内文本上下的预留空白宽度,默认值为1 1(像素)。(像素)。reliefrelief:设置边框样式。:设置边框样式。statestate:设置组件状态,默认值为:设置组件状态,默认值为NORMALNORMAL,设置为,设置为DISALBEDDISALBED时,组件不时,组件不响应鼠标事件。当鼠标指向组件时,响应鼠标事件。当鼠标指向组件时,statestate属性值为属性值为ACTIVEACTIVE。takefocustakefocus:默认情况下,标签不接收焦点。在按【:默认情况下,标签不接收焦点。在按【TabTab】键切换焦点】键切换焦点时,会跳过标签。将时,会跳过标签。将tak
34、efocustakefocus属性设置为属性设置为1 1可使标签获得焦点。可使标签获得焦点。texttext:设置标签显示的文本,文本中可用:设置标签显示的文本,文本中可用“nn”换行。换行。textvariabletextvariable:设置标签关联变量,关联变量必须是:设置标签关联变量,关联变量必须是StringVarStringVar类型。类型。underlineunderline:设置为:设置为n n时,标签中第时,标签中第n n个字符显示下划线。个字符显示下划线。widthwidth、heightheight:设置标签宽度和高度。若标签中显示了图片,则单位:设置标签宽度和高度。若标
35、签中显示了图片,则单位为像素,否则单位为字符个数。为像素,否则单位为字符个数。wraplengthwraplength:设置标签显示文字的回卷宽度(单位为像素),超过宽:设置标签显示文字的回卷宽度(单位为像素),超过宽度时自动换行。默认值为度时自动换行。默认值为0 0,遇到,遇到“nn”才换行。才换行。标签应用实例标签应用实例8.2.3 8.2.3 按钮组件按钮组件ButtonButton 按钮通常用于在用户单击时执行某一操作,按钮通常用于在用户单击时执行某一操作,tkinter.Buttontkinter.Button类用于创建按钮。类用于创建按钮。按钮的部分属性与标签相同,其他常用属性如下
36、。按钮的部分属性与标签相同,其他常用属性如下。commandcommand:设置单击按钮时执行的函数。:设置单击按钮时执行的函数。按钮实例按钮实例8.2.4 8.2.4 输入组件输入组件EntryEntry 输入组件用于显示和输入简单的单行文本,输入组件用于显示和输入简单的单行文本,tkinter.Entrytkinter.Entry类用于创建输入组件。类用于创建输入组件。输入组件的部分属性与标签相同,其他常用属性如下。输入组件的部分属性与标签相同,其他常用属性如下。showshow:设置输入组件显示字符,显示字符代替实际输入显:设置输入组件显示字符,显示字符代替实际输入显示在组件中,常用于密
37、码输入。示在组件中,常用于密码输入。statestate:设置组件状态,除了可设置为:设置组件状态,除了可设置为NORMALNORMAL、DISABLEDDISABLED和和ACTIVEACTIVE外,还可设置为外,还可设置为readonlyreadonly。设置为。设置为readonlyreadonly时时,组件为只读状态,不接收输入。,组件为只读状态,不接收输入。validatevalidate:设置在什么时间执行:设置在什么时间执行validatecommandvalidatecommand参数设置参数设置的校验函数。的校验函数。validatecommandvalidatecomman
38、d:设置校验函数。:设置校验函数。输入组件常用方法输入组件常用方法delete(first,last=None)delete(first,last=None):删除从:删除从firstfirst开始到开始到lastlast之前的字符,省之前的字符,省略略lastlast时删除时删除firstfirst到末尾的全部字符。组件中第一个字符位置为到末尾的全部字符。组件中第一个字符位置为0 0。删除全部字符可使用删除全部字符可使用delete(0,ENDdelete(0,END)get()get():返回组件中的全部字符。:返回组件中的全部字符。icursor(index)icursor(index)
39、:将插入点设置到第:将插入点设置到第indexindex个字符之前。个字符之前。index(index)index(index):移动文本,使第:移动文本,使第indexindex个字符成为最左端的一个可见字个字符成为最左端的一个可见字符。若文本已全部显示在组件中,方法无效。符。若文本已全部显示在组件中,方法无效。insert(index,s)insert(index,s):在第:在第indexindex个字符前插入字符串个字符前插入字符串s s。select_adjust(index)select_adjust(index):调整选区,包含第:调整选区,包含第indexindex个字符。如果
40、选区已个字符。如果选区已包含该字符,方法无效。包含该字符,方法无效。select_clear()select_clear():撤销选区。若当前没有选定内容,方法无效。:撤销选区。若当前没有选定内容,方法无效。输入组件常用方法输入组件常用方法select_from(index)select_from(index):设置选区开始位置,组件的:设置选区开始位置,组件的ANCHORANCHOR设置为设置为indexindex。select_present()select_present():有选中内容时返回:有选中内容时返回TrueTrue,否则返回,否则返回FalseFalse。select_ran
41、ge(start,end)select_range(start,end):选中:选中startstart到到endend之前的内容。选中全部之前的内容。选中全部文字可使用文字可使用select_range(0,END)select_range(0,END),焦点在组件中时执行该方法才有效,焦点在组件中时执行该方法才有效。select_to(index)select_to(index):选中从:选中从ANCHORANCHOR位置开始,到位置开始,到indexindex之前的字符。之前的字符。1.1.使用简单的输入组件使用简单的输入组件2.2.输入组件校验输入组件校验 输入组件通过输入组件通过va
42、lidatevalidate和和validatecommandvalidatecommand属性添加校验功属性添加校验功能。能。创建输入组件时,创建输入组件时,validatevalidate参数可设置为下列字符串:参数可设置为下列字符串:focusfocus:在组件获得或失去焦点时执行校验函数。:在组件获得或失去焦点时执行校验函数。focusinfocusin:在获得焦点时执行校验函数。:在获得焦点时执行校验函数。focusoutfocusout:在失去焦点时执行校验函数。:在失去焦点时执行校验函数。keykey:在按了某个键时执行校验函数。:在按了某个键时执行校验函数。allall:在上述
43、任何一种情况下都执行校验函数。:在上述任何一种情况下都执行校验函数。nonenone:不执行校验函数。:不执行校验函数。创建输入组件时,创建输入组件时,validatecommandvalidatecommand参数设置为校验函数名参数设置为校验函数名称。校验函数返回称。校验函数返回TrueTrue表示输入有效;返回表示输入有效;返回FalseFalse则拒绝输则拒绝输入,组件文本保持不变。入,组件文本保持不变。注意:校验函数名称并不是自定义的函数名称。首先自定注意:校验函数名称并不是自定义的函数名称。首先自定义一个函数来完成校验操作,然后调用输入组件的义一个函数来完成校验操作,然后调用输入组
44、件的register()register()方法注册,该方法返回的字符串作为校验函数方法注册,该方法返回的字符串作为校验函数名称使用。名称使用。在校验函数中,可通过关联的控制变量获得组件中的文本在校验函数中,可通过关联的控制变量获得组件中的文本。若只需要在校验函数中使用组件文本,则。若只需要在校验函数中使用组件文本,则validatecommandvalidatecommand参数设置格式为参数设置格式为“validatecommand=validatecommand=校验校验函数名称函数名称”。tkintertkinter还允许使用替代码向校验函数传入更多的信息。使还允许使用替代码向校验函数
45、传入更多的信息。使用替代码时,用替代码时,validatecommandvalidatecommand参数设置格式为参数设置格式为“validatecommand=(validatecommand=(校验函数名称校验函数名称,替代码替代码1,1,替代码替代码2,2,)”可使用的替代码如下。可使用的替代码如下。%d%d:动作代码,表示触发执行校验函数的原因。:动作代码,表示触发执行校验函数的原因。0 0表示试图删除表示试图删除字符,字符,1 1表示试图插入字符,表示试图插入字符,-1-1表示获得焦点、失去焦点或改变关表示获得焦点、失去焦点或改变关联控制变量的值。联控制变量的值。%i%i:试图删除
46、或插入字符时,参数值为插入点位置或将被删除的:试图删除或插入字符时,参数值为插入点位置或将被删除的第一个字符的位置。如果触发执行校验函数的原因是获得焦点、失第一个字符的位置。如果触发执行校验函数的原因是获得焦点、失去焦点或改变关联控制变量的值,参数值为去焦点或改变关联控制变量的值,参数值为-1-1。%P%P:校验有效时,组件将拥有的文本。:校验有效时,组件将拥有的文本。%S%S:试图删除或插入字符时,参数值为即将插入或删除的文本。:试图删除或插入字符时,参数值为即将插入或删除的文本。%v%v:组件的:组件的validatevalidate属性的值。属性的值。The reason for thi
47、s callback:one of focusin,The reason for this callback:one of focusin,focusout,key,or forced if thefocusout,key,or forced if the textvariable was changed.textvariable was changed.%V%V:在关联变量被改变时,触发执行校验函数的原因:在关联变量被改变时,触发执行校验函数的原因:focusinfocusin、focusoutfocusout、keykey或或forcedforced%W%W:组件的名称:组件的名称8.2.
48、5 8.2.5 列表框组件列表框组件ListboxListbox 列表框用于显示多个列表项,每项为一个字符串。列表框列表框用于显示多个列表项,每项为一个字符串。列表框允许用户一次选择一个或多多个列表项。允许用户一次选择一个或多多个列表项。tkinter.Listboxtkinter.Listbox类用于创建列表框。类用于创建列表框。列表框的部分属性和标签相同,其他常用属性如下。列表框的部分属性和标签相同,其他常用属性如下。activestyleactivestyle:设置选中项的样式,参数值可设置为:设置选中项的样式,参数值可设置为underlineunderline(下划线,默认值)、(下划
49、线,默认值)、dotboxdotbox(虚线框)或(虚线框)或nonenone(无特殊样式)(无特殊样式)listvariablelistvariable:关联一个:关联一个StringVarStringVar类型的控制变量,该变量关联列表框全部选项。在调用控类型的控制变量,该变量关联列表框全部选项。在调用控制变量的制变量的set()set()方法设置列表框初始列表项时,各个列表项在字符串中用空格分隔。在调用控制方法设置列表框初始列表项时,各个列表项在字符串中用空格分隔。在调用控制变量的变量的get()get()方法时返回一个字符串方法时返回一个字符串“(item0,item1,(item0,
50、item1,)”,其中,其中item0item0、item1item1等为一等为一个列表项。个列表项。selectmodeselectmode:设置选择模式,参数可设置为:设置选择模式,参数可设置为BROWSEBROWSE(默认值,只能选中一项,可拖动)、(默认值,只能选中一项,可拖动)、SINGLESINGLE(只能选中一项,不能拖动)、(只能选中一项,不能拖动)、MULTIPLEMULTIPLE(通过鼠标单击选中多个列表项)、(通过鼠标单击选中多个列表项)、EXTENDEDEXTENDED(通过鼠标拖动选中多个列表项)。(通过鼠标拖动选中多个列表项)。xscrollcommandxscro
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。