专题十六 GUI图形化编程(讲义)-《Python程序设计》职教高考备考讲练测(安徽省)

2025-04-01
| 24页
| 135人阅读
| 0人下载
精品

内容正文:

专题十六 GUI图形化编程 [考纲要求] 1.了解Tkinter的定义 2.熟练掌握布局管理器 3.熟记tkinter常用控件和属性 4.熟记tkinter主窗口与控件 5.熟记控件的通用属性 6.熟练使用八大控件 [课时安排] 2课时 [知识梳理] 什么是GUI编程 Tkinter(即 tk interface,简称“Tk”)本质上是对 Tcl/Tk 软件包Python接口的封装,它是Python官方推荐的 GUI(图形用户界面) 工具包,属于Python自带的标准库模块,只需安装好Python后,就可以直接使用它,而无须另行安装(Python内置的)。 作为一款 Python的GUI工具,Tkinter 拥有良好的跨平台性,支持 Windows、Linux、Mac 平台,它传承了 Python 语法简洁、代码易读的基本特点。 布局管理器 Tkinter 提供了三种常用的布局管理器,分别是 pack( )、grid( ) 以及 place( ): 方法 说明 特点 pack( ) 默认将控件自上而下居中布局。强调控件的先后顺序 灵活性较差 grid( ) 以行和列的形式(类似网格)对控件进行排列 较为灵活 place( ) 可以指定组件大小以及摆放位置 三个方法中最为灵活 pack( )布局 pack( ) 是一种较为简单的布局方法,在不使用任何参数的情况下,它会将控件以添加时的先后顺序,自上而下,一行一行的进行排列,并且默认居中显示。pack( )方法的常用参数如下所示: 属性 说明 anchor 组件在窗口中的对齐方式,有9个方位参数值,比如"n"/"w"/"s"/"e"/"ne",以及 "center" 等(这里的 e w s n分别代表,东西南北),如果是大写的EWSN不用双引号例如:anchor=E(其实就是在控件所在行的范围内的对齐方式) side 组件放置在窗口的哪个位置上,参数值 'top','bottom','left','right'。注意,单词小写时需要使用字符串格式,若为大写单词则不必使用字符串格式(不加引号) ipadx,ipady 表示控件内的文本内容和组件边框的距离(内边距)。 padx,pady 用于控制之间的上下、左右的距离(外边距)。其中的padx一般需要配合side使用才能生效。 grid( )布局 grid( ) 布局是一种基于网格式的布局管理方式,相当于把窗口看成由行和列组成的表格。当使用 grid 进行布局时,表格内的每个单元格都可以放置一个控件。从而实现对界面的布局管理。 属性 说明 row 控件位于表格中的第几行,默认从第0行开始 rowspan 控件所跨的行数(默认为1行),通过该参数可以合并多行单元格已实现控件居中的效果 column 控件位于表格中的第几列,默认从第0列开始 columnspan 控件所跨的列数(默认为1列),通过该参数可以合并多列单元格已实现控件居中的效果 ipadx,ipady 表示控件内的文本内容和组件边框的距离(内边距) padx,pady 用于控制之间的上下、左右的距离(外边距)。 sticky 该属性用来设置控件位于单元格哪个方位上,参数值和anchor相同。若不设置该参数则控件在单元格内居中。(配合rowspan和columnspan使用,同时使用rowspan和column可以解锁NE,SE,SW,NW的四个方向) 注意:在一个程序中不能同时使用pack( )和grid( )方法,这两个方法只能二选一,否则程序会运行错误。 当使用 grid 函数布局的时,其实就是为各个控件指定行号、列号的过程,我们不需要为每个单元格指定大小,因为 grid 会为每个单元格自动设置一个合适的尺寸。 place( )布局 与前两种布局方法相比,采用place( )方法进行布局管理要更加精细化,通过place( )布局管理器可以直接指定控件在窗体内的绝对位置,或者相对于其他控件定位的相对位置。 属性 说明 anchor 定义控件在窗体内的方位,参数值N/NE/E/SE/S/SW/W/NW 或 CENTER,默认值是 NW(左上角)anchor就是对象位置的参考点。 x、y x和y参数分别用于设置控件在主窗口或框架中水平方向和垂直方向布局的起始位置,它们均是以 px(像素)为单位。主窗口左上角为原点。 relx、rely 定义控件相对于根窗口在水平和垂直方向上的相对位置,取值范围在0.0~1.0 之间。 width、height 控件自身的宽度和高度(单位为像素) relwidth 、relheight 控件宽度和高度相对于根窗体高度和宽度的比例,取值也在 0.0~1.0 之间 注意:在一个父组件中 place( )方法可以与 grid( )方法混合使用,也可以和pack()布局使用。(place可以和pack混合用,place也可以和grid混合使用,就是grid和pack不能混合用) 通过上述描述我们知道,relx和rely参数指定的是控件相对于父组件的位置,而relwidth和relheight参数则是指定控件相对于父组件的尺寸大小。 Tkinter常用控件 一个完整的GUI程序,其实是由许多小的控件(widgets)构成的,比如按钮、消息对话框、输入框、列表框、多选框等等。在学习 Tkinter GUI编程的过程中,不仅要学会如何摆放这些控件,还需要了解掌握各种控件的功能、属性,只有这样才能开发出一个设计优雅且功能完善的 GUI图行界面程序。 控件类型 控件名称 控件作用 Button 按钮 点击按钮时触发执行事件函数 Entry 文本输入框 用于接收单行文本输入 Label 标签控件 用于显示单行文本或者图片 Message 多行文本标签控件 用于显示多行不可编辑的文本,与 Label控件类似,增加了自动分行的功能 Listbox 列表框控件 以列表的形式显示文本 messagebox 消息框控件 用户交互的消息对话框 Radiobutton 单选框 单项选择按钮,只允许从多个选项中选择一项 CheckButton 复选框 多项选择按钮,可允许从多个选项中选择 Tkinter主窗口与控件 主窗口控件(window)是一切控件的基础,它好比是一台高速运转的机器,而其他控件则相当于这台机器上的部件,比如齿轮、链条、螺丝等等。主窗口是一切控件的基础,所有的控件的都需要通过主窗口来显示。 窗口常用属性 函数 说明 root.title("my title") 接受一个字符串参数,为窗口起一个标题 root.resizable() 是否允许用户拉伸主窗口大小,默认为可更改,当设置为 resizable(0,0)或者resizable(width=False,height=False)时不可更改 root.geometry() 设定主窗口的大小以及位置(初始显示位置),当参数值为 None 时表示获取窗口的大小和位置信息。 root.quit() 关闭当前窗口 root.destroy()/quit() 也是退出窗口 root.mainloop() 设置窗口主循环,使窗口循环显示(一直显示) root.config(background ="red") 设置窗口的背景色为红色,也可以接受16进制的颜色值 控件通用属性 属性名称 说明 bg 用来设置背景色 bd 控件的边框宽度,单位为像素,默认为 2 个像素 font 指定文本的样式,元组参数格式(字体,大小,样式) fg 字体颜色 width/height 控件的宽和高 justify 表示多行文本的对齐方式,参数值为 left、right、center relief 指定边框样式,默认值是 "flat",其他参数值有 "groove"、"raised"、"ridge"、"solid"或者"sunken",如果全是大写则不用双引号,例如relief=GROOVER state 该参数用来指定控件的状态,默认值为"normal"(正常状态),其他可选参数值有"disabled"(不可用状态) text 用来指定 Lable 显示的文本,注意文本内可以包含换行符 config 可以用来设置空间的属性 如 lb.config(text=st) 设置文本为st 常考控件 Label 标签 Label(标签)控件,是Tkinter中最常使用的一种控件,标签控件在窗口中用于显示一行只读性文本,通常用于为其他控件(如文本框)提供说明信息。 标签控件可以通过调用tkinter模块中Label类的构造函数来创建,其调用格式如下: Label(root,text=…,image) 参数text是一个字符串,用于指定标签中显示的文本内容。若要在标签中显示多行文本,则应在字符串中使用换行符" "。 image可以绑定一个图片对象(仅支持gif和png图片格式) image = PhotoImage(file=图片路径) [示例] from tkinter import * root = Tk() root.geometry("300x200") image = PhotoImage(file="./panda.gif") lb1=Label(root,text="测试标签插入图片",image=image) lb1.pack() root.mainloop() 其中compound属性可以调整文字和图片的位置 Label 标签的常用属性 属性名称 说明 bg 用来设置背景色 bd 即 borderwidth 用来指定 Label 控件的边框宽度,单位为像素,默认为 2 个像素 font 指定 Lable 中文本的 (字体,大小,样式)元组参数格式,一个 Lable 只能设置一种字体 fg 设置 Label 的前景色(字体颜色) height/width 设置 Label 的高度/宽度,如果 Lable 显示的是文本,那么单位是文本单元,如果 Label 显示的是图像,那么单位就是像素,如果不设置,Label 会自动根据内容来计算出标签的高度 justify 表示多行文本的对齐方式,参数值为 left、right、center,注意文本的位置取决于 anchor 选项 relief 指定边框样式,默认值是 "flat",其他参数值有 "groove"、"raised"、"ridge"、"solid"或者"sunken",如果全是大写则不用双引号,例如relief=GROOVER state 该参数用来指定 Lable 的状态,默认值为"normal"(正常状态),其他可选参数值有"active"和"disabled" text 用来指定 Lable 显示的文本,注意文本内可以包含换行符 config 可以用来设置标签的属性 如 lb.config(text=st) 设置文本为st Message 控件 Message 控件与 Label 控件的功能类似,它主要用来显示多行不可编辑的文本信息,与 Label 的不同之处在于该控件增加了自动分行的功能。 Message(root, text=...) 参数text用于指定消息控件显示的文本内容。 消息控件有一个aspect属性,可以用来设置该控件的宽高比例。该属性的默认值为150,即宽度是高度的150%。若将aspect属性设置为300,则宽度变成高度的3倍。 [示例]实现下面的界面 from tkinter import * root = Tk() root.config(bg='#8DB6CD') root.title("Message 控件学习") root.geometry('400x300') txt = "Python官网,网址是:python.org" msg = Message(root, text=txt, width=60, font=('微软雅黑', 10, 'bold')) msg.pack(side=LEFT) root.mainloop() Button 按钮控件 Button 控件是 Tkinter 中常用的窗口部件之一,同时也是实现程序与用户交互的主要控件。通过用户点击按钮的行为来执行回调函数,是 Button 控件的主要功用。首先自定义一个函数或者方法,然后将函数与按钮关联起来,最后,当用户按下这个按钮时,Tkinter 就会自动调用相关函数。 按钮控件使用起来非常简单,它同样可以包含文本、图像、位图,并通过command参数回调函数。当然按钮也并非一定要执行回调函数(callback function),不过这样的按钮是没有“灵魂的” 属性 说明 text 按钮控件要显示的文本 anchor 控制文本所在的位置,默认为中心位置(CENTER)需要配合width和height属性 bd 按钮边框的大小,默认为2个像素 relief 指定边框样式,默认值是 "flat",其他参数值有 "groove"、"raised"、"ridge"、"solid"或者"sunken",如果全是大写则不用双引号,例如relief=GROOVER bg 按钮的背景色 command 用来执行按钮关联的回调函数。当按钮被点击时,执行该函数(最重要) fg 按钮的前景色 font 按钮文本的字体样样式,元组的形似 如(“微软雅黑”,18,“bold”) width/height 按钮的宽度/高度 justify 按钮显示多行文本时,用来指定文本的对齐方式,参数值有 LEFT/RIGHT/CENTER padx/pady padx 指定 x 轴(水平方向)的间距大小,pady 则表示 y轴(垂直方向)的间距大小(在布局管理器中设置) ipadx/ipady ipadx 指标签文字与标签容器之间的横向距离;ipady 则表示标签文字与标签容器之间的纵向距离(在布局管理器中设置) state 设置按钮的可用状态,可选参数有NORMAL/ACTIVE/DISABLED,默认为 NORMAL 按钮控件通过调用tkinter模块中Button控件类的构造函数来创建,格式如下: Button(root,text=...,command=...) 其中参数 root 表示主窗口对象或容器控件;参数 text 是一个字符串,用于指定按钮上显示的文本信息;参数 command 用于指定单击按钮时执行的函数,该函数也被称为按钮的事件处理函数。 [示例] 设计一个界面:窗口大小为宽300高200,按钮的宽8高2,字体红色,背景色绿色。字体为宋体,18号。点击按钮在下面的标签显示”hello world” from tkinter import * root=Tk() root.title("按钮示例") root.geometry("300x200") def say(): lb.config(text="Hello World") btn1=Button(root,text="显示",width=8,height=2,fg='red',bg='green',font=('宋体',18),command=say) btn1.pack() lb=Label(root) lb.pack() root.mainloop() Entry 输入控件 单行文本框呈现为一行空白的输入区域,它本身不带说明性文字,通常要使用标签控件Label来说明其用途或功能。 Entry(root,width=…,show=…) width 输入框的宽度 show 可以用来屏蔽用户输入的文本。如果要输入登录密码,则可以将show属性设置为"*"可以保护密码隐私。 单行文本框控件是用于输入和编辑文本的,可以通过调用该控件的以下方法来实现文本的获取、插入和删除功能。 1) ety.get( ):获取输入框的文本 2)ety.insert(start,string):在指定位置插入文本 3) ety.delete(index1,index2):删除指定范围的文本,不删除index2处的字符 4) e.focus( )将焦点移到指定的输入框内 [示例] 在第一个输入框e1里面输入任意文本,点击获取文本则将e1输入框内容打印到控制台,点击插入文本则将e1输入框的内容插入到第二个输入框e2里面,同时清空e1输入框的内容 from tkinter import * root=Tk() root.title("Entry控件") root.geometry("300x200") def getTxt(): print(e1.get()) def insTxt(): cont = e1.get() e1.delete(0,'end') e2.delete(0,'end') e2.insert(0,cont) e1 = Entry(root,width=20) e1.pack(pady=10) e2 = Entry(root,width=20) e2.pack(pady=10) btn1=Button(root,text="获取文本",command=getTxt) btn1.pack() btn2=Button(root,text="插入文本",command=insTxt) btn2.pack() root.mainloop() Text 文本编辑框 Text文本组件用于显示和处理多行文本。该组件的主要目的是显示多行文本,但它常常被用于作为简单的文本编辑器和网页浏览器使用。 当创建一个Text组件的时候里面是没有内容的。为了给其插入内容,可以使用insert()以及INSERT或END索引号。 Button(root,width=...,height=...) txt.insert('insert',文本) 在光标的位置开始插入文本 text.insert('0.0',文本) 在起始位置插入文本 text.insert('end',文本) 在末尾插入文本 txt.delete('0.0','end') 表示删除所有文本 txt.get('0.0','end') 表示获取全部文本 [示例] 实现功能:将Text文本编辑框的内容与单行文本输入框的内容进行交换。窗口大小宽300高200。文本编辑框宽30高5。其他控件大小,位置不作硬性要求。 from tkinter import * root=Tk() root.title("Text控件") root.geometry("300x200") txt=Text(root,width=30,height=5) txt.pack() e=Entry(root) e.pack(pady=30) def jh(): a,b=txt.get('0.0','end'),e.get() a,b=b,a txt.delete('0.0','end') e.delete(0,'end') txt.insert('0.0',a) e.insert(0,b) btn=Button(root,text="交换",command=jh) btn.pack() root.mainloop() Listbox 列表框控件 列表框(Listbox)控件包含一组文本选项可供用户选择.列表框控件呈现为一个矩形区域,其中包含一些选项,每个选项占用一行,可以从中选择一项或多项.来看看下面的图片示例: 列表框控件实例可以通过调用tkinter模块中Listbox控件类构造方法来创建,其具体调用格式如下: lst=Listbox(root, listvariable=..., selectmode=...) 参数root用于表示主窗口或容器控件 listvariable用于指定要绑定的控制变量 selectmode用于指定列表框的选择模式其可取值为SINGLE(单选)、MULTIPLE(简单多选)、EXTENDED(扩展多选)以及BROWSE(浏览这是默认值)。 1) insert(index,string):用于在列表框指定位置添加一个选项。index表示索引值,是从0开始计数的。当前被选中的选项的索引值用ACTIVE表示,最后一个选项用 END 表示。 2) size():用于返回列表框包含的选项数目。 3) get(index1[, index2]):用于返回指定范围的选项(包含index2的位置的选项)。 4) curselection():用于返回当前选项的索引。返回元组的类型。 5) delete(index1, index2):用于删除指定范围[index1,index2]的选项。 [示例] 选择列表框的选项单选)然后点击按钮,显示出选择的课程 其中的课程显示标签的参数: bg='#B0B0B0', font=('微软雅黑', 15), width=20 from tkinter import * # 创建一个按钮的点击事件 def click_button(): if len(lib.curselection()) > 0: val = lib.get(lib.curselection()) # 使用 curselection来选中文本 var1.set(val) # 设置label值 else: var1.set("请选择课程!") # 设置label值 root = Tk() root.title("Listbox 示例") root.geometry('400x180') var1 = StringVar() # 创建变量 lb = Label(root, bg='#B0B0B0', font=('微软雅黑', 15), width=20, textvariable=var1) lb.pack() btn1 = Button(root, text='获取当前选项', command=click_button) btn1.pack() # 创建Listbox并为其添加内容 var2 = StringVar() var2.set(["C", "Java", "Python", "C#", "Golang", "Runby"]) lib = Listbox(root, listvariable=var2) lib.pack() root.mainloop() 动态数据类型 在GUI编程的过程中,有时我们需要“动态跟踪”一些变量值的变化,从而保证值的变换及时的反映到显示界面上,但是 Python 内置的数据类型是无法做到的,我们把这些方法创建的数据类型称为“动态类型”,比如 StringVar() 创建的字符串,称为“动态字符串”。常用的就两个:IntVar( ) 动态整型变量 StringVar( ) 动态字符串变量。 创建动态字符串变量: v=StringVar( ) 动态变量有两个方法 v.get( )获取变量的内容 v.set(cont)设置变量的内容 [示例] 在第一个输入框输入计算公式点击”=”按钮则在第二个输入框显示计算结果。 from tkinter import * root=Tk() root.title("动态变量") root.geometry("300x100") v=StringVar() # 创建动态字符串变量 e1=Entry(root,width=20,textvariable=v) e1.grid(row=0,column=0,padx=20,pady=20) def js(): res = eval(v.get()) e2.delete(0,'end') e2.insert(0,res) Button(root,text="=",command=js).grid(row=0,column=1) e2=Entry(root,width=8) e2.grid(row=0,column=2,padx=20) root.mainloop() Radiobutton 单选按钮 控件用于提供一种单项选择功能,给出一组相关的选项,让用户每次只能从其中选择一个选项.单选按钮呈现为一个小圆圈和一个相邻的描述性标题,单击小圆圈或标题均可选中单选按钮.未选中时小圆圈内是空白的,选中时小圆圈内出现一个圆点。 单选按钮通常是以控件组的形式使用的,在同一组内各个单选按钮之间是相互排斥的关系,这意味着在同一时刻只能选中一个单选按钮,每当选中组内的一个单选按钮时,组内的其他单选按钮会自动更改为非选中状态.在不同的单选按钮组之间,各个单选按钮则是相互独立、互不影响的。 单选按钮控件实例可以通过调用tkinter模块中Radiobutton控件类构造方法来创建,其调用格式如下: Radiobutton(root,text=...,variable=...,value=...,command=...) 参数root表示主窗口或容器控件 参数text用于指定单选按钮旁边显示的文本 参数varaible用于指定相关的IntVar或StringVar控制变量 参数value用于指定单选按钮的取值,可以是一个整数或字符串(取决于你用什么动态变量)。 参数command 用于指定单选按钮的事件处理函数。 如果希望通过若干个单选按钮构成一个控件组,则需要将这些单选按钮的variable属性绑定到同一个动态变量上。 当用户选择某个单选框,则会将value属性绑定的值赋值给variable绑定的变量。还可以为控件组设置一个默认选项,使用变量.set(value绑定的值)的方法来设置。 [示例] 选择单选框的小(16号字体)、中(20号字体)、大(24号字体)来调节字体的大小。 from tkinter import * def setFontsize(): lb["font"] = ("宋体", fontsize.get()) root = Tk() root.title("单选按钮应用示例") root.geometry("300x200") lb = Label(root, text="Python 程序设计", font=("宋体", 16), fg="red") lb.pack(pady=10) fontsize = IntVar() rb1 = Radiobutton(root, text="小", variable=fontsize, value=16, command=setFontsize) rb2 = Radiobutton(root, text="中", variable=fontsize, value=20, command=setFontsize) rb3 = Radiobutton(root, text="大", variable=fontsize, value=24, command=setFontsize) fontsize.set(16) # 设置单选框的初始选项 rb1.pack(side=LEFT, padx=40) rb2.pack(side=LEFT) rb3.pack(side=LEFT, padx=40) root.mainloop() [示例] 制作一个简单的选课小程序,当选择某个课程时下面显示选择的课程字体的要求: ('微软雅黑', '15', 'bold')。示例如下: from tkinter import * def select(): dict = {1: 'Python', 2: 'Java', 3: 'C++', 4: 'C'} strings = '您选择了 ' + dict[var.get()] + ',祝您学习愉快' lb.config(text=strings) root = Tk() root.title("Radiobutton控件示例") root.geometry('400x180') var = IntVar() rb1 = Radiobutton(root, text='Python', variable=var, value=1, command=select) rb2 = Radiobutton(root, text='Java', variable=var, value=2, command=select) rb3 = Radiobutton(root, text='C++', variable=var, value=3, command=select) rb4 = Radiobutton(root, text='C', variable=var, value=4, command=select) rb1.pack(anchor='w') rb2.pack(anchor='w') rb3.pack(anchor='w') rb4.pack(anchor='w') lb = Label(root, font=('微软雅黑', '15', 'bold')) lb.pack(side='bottom') root.mainloop() Checkbutton 多选按钮 复选框控件用于提供一种多项选择的功能,即给出一个或多个选项,允许用户选择任意多项,既可以一项也不选,也可以全部选中。复选框呈现为一个小方框和一个相邻的描述性标题,单击小方框或标题均可选中复选框,再次单击则取消选中。当未选中时小方框内是空白的,当选中时小方框内会出现一个对勾(√)。 Checkbutton(root,text=...,variable=..., command=...) 参数root用于表示主窗口或容器控件 参数text用于指定多选按钮旁边描述的标题文本 参数variable用于指定要绑定的IntVar或StringVar的变量 参数command用于指定多选按钮的事件处理函数 Variable参数绑定不同的变量,实现多项选择 在程序代码中,可以通过控制变量的get( )方法来获取复选框的状态或通过set( )方法来设置复选框的状态。当复选框处于选中状态时,控制变量的值为数字1或’1’(如果是IntVar则是数字1,如果是StringVar就是字符1);当其处于未选中状态时,控制变量的值为数字0或字符0。 也可以自己制定返回值,offvalue是未选中返回的值 onvalue是选中的返回的值 [示例] 假设某一道题目的答案是ABD,选择完答案点击提交。如果选择正确则在按钮的下面显示回答正确,否则显示回答错误。 from tkinter import * root=Tk() root.title("多选按钮应用示例") root.geometry("300x300") def tj(): if var1.get()==1 and var2.get()==1 and var4.get()==1 and var3.get()==0: lb.config(text="回答正确!") else: lb.config(text="回答错误!") var1=IntVar() ck1=Checkbutton(root,text="A",variable=var1) ck1.pack() var2=IntVar() ck2=Checkbutton(root,text="B",variable=var2) ck2.pack() var3=IntVar() ck3=Checkbutton(root,text="C",variable=var3) ck3.pack() var4=IntVar() ck4=Checkbutton(root,text="D",variable=var4) ck4.pack() btn=Button(root,text="提交",command=tj) btn.pack() lb=Label(root) lb.pack() root.mainloop() [示例] 实现下面的小程序:其中的“学生选课系统”字体要求("隶书", 18)主窗口的大小330x230 from tkinter import * root=Tk() root.title("复选框应用示例") root.geometry("330x230") def xz(): lst=[] if var1.get()==1:lst.append("PS图像处理") if var2.get()==1:lst.append("Flash动画制作") if var3.get()==1:lst.append("VB程序处理") if var4.get()==1:lst.append("SQL Server数据库") st=f"您选择了{len(lst)}门课程: " + " ".join(lst) ms.config(text=st) lb1=Label(root,text="学生选课系统",font=("微软雅黑",18,'bold')) lb1.grid(row=0,columnspan=2) lb2=Label(root,text="请从下列课程中选择:") lb2.grid(row=1,column=0,padx=20) var1=IntVar() ck1=Checkbutton(root,text="PS图像处理",variable=var1,command=xz) ck1.grid(row=2,column=0,sticky='w',padx=20) var2=IntVar() ck2=Checkbutton(root,text="Flash动画制作",variable=var2,command=xz) ck2.grid(row=2,column=1,sticky='w') var3=IntVar() ck3=Checkbutton(root,text="VB程序处理",variable=var3,command=xz) ck3.grid(row=3,column=0,sticky='w',padx=20) var4=IntVar() ck4=Checkbutton(root,text="SQL Server数据库",variable=var4,command=xz) ck4.grid(row=3,column=1,sticky='w') ms=Message(root,aspect=300) ms.grid(row=4,columnspan=2,sticky='w',padx=20) root.mainloop() 鼠标键盘事件 1.鼠标事件 <Button-1>                                                              鼠标左键单击 <Button-2>                                                              鼠标中键单击 <Button-3>                                                             鼠标右键单击 <B1-Motion>                                                            鼠标左键拖动 <B2-Motion>                                                            鼠标中键拖动 <B3-Motion>                                                 鼠标右键拖动 <ButtonRelease-1>                                                    鼠标左键释放 <ButtonRelease-2>                                                    鼠标中键释放 <ButtonRelease-3>                                                    鼠标右键释放 <Double-Button-1>                                                    鼠标左键双击 <Double-Button-2>                                                    鼠标中键双击 <Double-Button-3>                                                    鼠标右键双击 <Enter>                                                                  鼠标指针进入控件 <Leave>                                                                  鼠标指针离开控件 2.键盘事件 <Return>                                                                 回车 <Delete>                                                                 Delete键 <KeyPress-A> 按下键盘中的'A'键 <KeyPress-B> 按下键盘中的'B'键 【示例】 from tkinter import * root=Tk() root.title("键盘事件") root.geometry("300x200") def say1(event): print("1") def say2(event): print("2") def say3(event): print("3") root.bind("<KeyPress-A>",say1) root.bind("<KeyPress-B>",say2) root.bind("<KeyPress-C>",say3) btn=Button(root,text="按钮1") btn.pack() btn.bind("<ButtonPress>",say1) root.mainloop() [限时练习] 1.在Tkinter中,以下哪种布局管理器适合用于将控件以行和列的形式进行排列?( ) A. pack() B. grid() C. place() D. 以上都是 【答案】B 【解析】 grid()布局管理器以行和列的形式对控件进行排列,适合需要网格布局的场景。pack()默认将控件自上而下居中布局,place()可以指定组件大小以及摆放位置。 2.在Tkinter中,以下哪种控件用于显示多行不可编辑的文本信息?( ) A. Label B. Message C. Entry D. Text 【答案】B 【解析】Message控件与Label控件功能类似,但主要用于显示多行不可编辑的文本信息,并且具有自动分行的功能。 3.在Tkinter中,以下哪种方法用于设置主窗口的大小以及位置?( ) A. root.title() B. root.resizable() C. root.geometry() D. root.config() 【答案】C 【解析】 root.geometry()方法用于设定主窗口的大小以及位置。root.title()用于设置窗口标题,root.resizable()用于设置窗口是否可被拉伸,root.config()用于设置窗口的背景色等属性。 4.在Tkinter中,以下哪种控件用于提供单项选择功能?( ) A. Checkbutton B. Radiobutton C. Listbox D. Entry 【答案】B 【解析】Radiobutton控件用于提供单项选择功能,用户每次只能从一组相关的选项中选择一个选项。Checkbutton用于多项选择,Listbox用于显示可选择的列表,Entry用于接收单行文本输入。 5.在Tkinter中,以下哪种变量类型用于动态跟踪字符串值的变化?( ) A. IntVar() B. StringVar() C. DoubleVar() D. BooleanVar() 【答案】B 【解析】StringVar()用于创建动态字符串变量,能够动态跟踪字符串值的变化,常用于与控件的文本显示相关联。IntVar()用于动态整型变量,DoubleVar()用于动态浮点型变量,BooleanVar()用于动态布尔型变量。 6.使用tkinter,实现作业完成记录表的功能。初始化界面,如图所示。实现界面显示及功能。(注:界面中各元素的大小颜色及位置,线条的粗细等不作硬性要求) 【答案】 from tkinter import * root = Tk() root.title("作业完成记录表") root.geometry("300x300") Label(root, text="作业科目").pack() v1 = IntVar() Checkbutton(root, text="语文", variable=v1).pack() v2 = IntVar() Checkbutton(root, text="数学", variable=v2).pack() v3 = IntVar() Checkbutton(root, text="英语", variable=v3).pack() v4 = IntVar() Checkbutton(root, text="程序", variable=v4).pack() lb = Label(root, text="已完成作业:") lb.pack(anchor='w', padx=30) def tj(): lst = [] if v1.get() == 1: lst.append("语文") if v2.get() == 1: lst.append("数学") if v3.get() == 1: lst.append("英语") if v4.get() == 1: lst.append("程序") lb.config(text="已完成作业: "+' '.join(lst)) def qk(): v1.set(0) v2.set(0) v3.set(0) v4.set(0) lb.config(text="已完成作业: ") Button(root, text="提交", command=tj).pack(side='left', padx=70) Button(root, text="清空", command=qk).pack(side='left') root.mainloop() 【解析】根据图片的布局,可以选择pack布局管理器。界面中有Label标签、多选按钮、按钮的控件。 [归纳小结] 学科网(北京)股份有限公司 $$

资源预览图

专题十六 GUI图形化编程(讲义)-《Python程序设计》职教高考备考讲练测(安徽省)
1
专题十六 GUI图形化编程(讲义)-《Python程序设计》职教高考备考讲练测(安徽省)
2
专题十六 GUI图形化编程(讲义)-《Python程序设计》职教高考备考讲练测(安徽省)
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。