第十一次课GUI编程教学教学课件.pptx
复习回顾任务九 GUI编程感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!新课导入到目前为止,我们所编写的Python代码都是处于一个文字交互界面的状态。但在实际应用中,很多用户都是非专业的,他们希望所提供的软件能有一个友好的界面,这就用到GUI编程了。GUI(Graphical User Interface)又称图形用户界面,是指采用图形方式显示的用户操作界面。Python的GUI工具包有很多,其中最常用的有tkinter,wxPython,PyGTK,PyQt等,本章将介绍如何使用tkinter来编写GUI程序。感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!知识能力目标理解使用tkinter进行GUI编程的主要步骤熟悉tkinter的常用控件掌握事件绑定的方法掌握布局管理器的使用方法了解标准对话框的使用方法连接数据库11.1 tkinter和Python编程11.2 tkinter常用控件11.3 事件绑定11.4 布局管理器11.5 标准对话框11.6 典型案例计算器11.1 tkinter和Python编程11.1.2 tkinter的使用11.1.1 tkinter简介感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!11.1.1 tkinter简介tkinter和Python编程u tkinter是Python的标准GUI库。u tkinter的优点是简单易用,与Python结合度好。u tkinter在Python 3.x下默认集成,不需要额外安装。因此,想要使用tkinter进行GUI编程,可直接使用import语句导入tkinter模块。import tkinter感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!11.1.2 tkinter的使用tkinter和Python编程创建一个GUI应用程序需要以下5个主要步骤。导入tkinter模块(import tkinter)创建一个顶层窗口对象(调用Tk()类),用于容纳整个GUI应用在顶层窗口对象上构建所有的GUI控件通过底层应用代码将这些GUI控件连接起来进入主事件循环(调用mainloop()函数)感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!tkinter常用控件在GUI编程中,顶层窗口对象包含组成GUI应用程序的所有小窗口对象,它们可能是文字标签、按钮、列表框等,这些独立的GUI组件称为控件。控 件描 述Button按钮控件,在程序中显示按钮Canvas画布控件,显示图形元素,如线条、椭圆、矩形等Checkbutton多选框控件,用于在程序中提供多项选择框Entry输入控件,用于显示简单的文本内容Frame框架控件,在屏幕上显示一个矩形区域,多用作容器Label标签控件,可以显示文本和图像LabelFrameFrame的进化版,标签和框架的组合Listbox列表框控件,用来显示一个字符串列表给用户Menu菜单控件,显示菜单栏、下拉菜单和弹出菜单Menubutton菜单按钮控件,用于显示菜单项Message消息控件,用来显示多行文本,与Label类似PanedWindow窗口布局管理插件,可以包含一个或多个子控件Radiobutton单选按钮控件,显示一个单选的按钮状态Scale线性滑块控件,根据已设定的起始值和终止值,给出当前设定的精确值Scrollbar滚动条控件,当内容超过可视化区域时使用,如列表框SpinboxEntry和Button的组合,允许对值进行调整Text文本控件,用于显示多行文本Toplevel容器控件,用来提供一个单独的对话框,和Frame类似感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!11.1.2 tkinter的使用tkinter和Python编程例:第一个tkinter实例创建一个窗口用于输出“Hello world“。import tkinter#导入tkinter模块top = tkinter.Tk()#创建一个顶层窗口对象label = tkinter.Label(top,text=Hello World,fg=red)#添加一个Label控件,用于显示文本label.pack()#调用Label控件的pack()方法top.mainloop()#进入主事件循环程序运行效果11.2 tkinter常用控件感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!11.2.1 窗口tkinter常用控件窗口也称为框架(Frame),是屏幕上的一块矩形区域,多用来作为容器布局窗体。窗口中可包含标签、菜单、按钮等其他控件,其运行之后可移动和缩放。属 性描 述title设置窗口标题geometry设置窗口大小resizable设置窗口是否可以变化长和宽感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!11.2.1 窗口tkinter常用控件例:创建一个300200的窗口,其标题为“金企鹅”,运行后该窗口宽不可变,高可变。import tkinter#导入tkinter库window = tkinter.Tk()#创建tkinter对象window.title(金企鹅)#设置标题window.geometry(300 x200)#设置窗口大小,注意是字母xwindow.resizable(width=False, height=True)#宽不可变,高可变,默认为Truewindow.mainloop()#进入主事件循环程序运行效果感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!11.2.2 Label控件tkinter常用控件Label控件是用于在界面上输出描述信息的标签,可以显示文本和图像。属 性描 述text要显示的文本bg背景颜色fg前景色bd外围3D边界的宽度font字体width控件宽度height控件高度relief边框样式感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!11.2.2 Label控件tkinter常用控件例:创建一个200100的窗口,其标题为“金企鹅”,在窗口中创建一个标签,用于显示“金企鹅联合出版中心”,并设置其字体、颜色、宽度和高度。import tkinter#导入tkinter库window = tkinter.Tk()#创建tkinter对象window.title(金企鹅)#设置标题window.geometry(200 x100)#设置窗口大小,注意是字母x#创建标签,text设置文本,bg设置背景色,fg设置前景色,font设置字体,width设置宽,height设置高label1 = tkinter.Label(window, text=金企鹅联合出版中心, bg=white, fg=blue, font=(宋体), width=20, height=3)label1.pack()#显示Labelwindow.mainloop()#进入主事件循环程序运行效果感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!11.2.3 Button控件tkinter常用控件通过Button控件可以方便地与用户进行交互。Button控件有一个command属性,用于指定一个函数或方法,当用户单击按钮时,tkinter就会自动调用该函数或方法。例:编写程序实现通过按下按钮来执行指定操作(改变标签的内容)。import tkinter as tk#导入tkinter模块重命名为tk#定义函数,用于实现改变标签的内容def btnHelloClicked(): labelHello.config(text = Hello tkinter!)top = tk.Tk()#创建tkinter对象top.geometry(200 x150)#设置窗口大小,注意是字母xtop.title(Button Test)#设置窗口标题#创建原始标签labelHello = tk.Label(top, text = Press the button., height = 5, width = 20, fg = blue)labelHello.pack()#显示标签#创建按钮,显示“Hello”,单击按钮调用btnHelloClicked函数btn = tk.Button(top, text = Hello, command = btnHelloClicked)btn.pack()#显示按钮top.mainloop()#进入主事件循环程序运行效果感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!11.2.4 Entry控件tkinter常用控件Entry控件就是输入框,用来输入单行内容,可以方便地向程序传递用户参数。获取输入框的内容可以使用Entry控件的get()方法。例:编写摄氏度转华氏度的小程序,要求从输入框输入摄氏度的值,单击计算按钮后得到华氏度的值。计算公式:F = 1.8C+32。import tkinter as tk#导入并重命名tkinter模块#定义函数用于读取Entry控件的内容并将计算结果进行输出def btnHelloClicked(): cd = float(entryCd.get()#读取Entry控件的内容 labelHello.config(text = %.2fC = %.2fF %(cd, cd*1.8+32)top = tk.Tk()#创建tkinter对象top.title(Entry Test)#设置窗口标题#创建标签labelHello = tk.Label(top, text = 摄氏度转华氏度, height = 5, width = 20, fg = blue)labelHello.pack()#显示标签entryCd = tk.Entry(top, text = 0)#创建输入框entryCd.pack()#显示输入框#创建按钮btnCal = tk.Button(top, text = 计算, command = btnHelloClicked)btnCal.pack()#显示按钮top.mainloop()#进入主事件循环程序运行效果感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!11.2.5 Radiobutton和Checkbutton控件tkinter常用控件Radiobutton和Checkbutton控件分别用于实现选项的单选和复选功能。属 性描 述variable单选框索引变量,通过变量的值确定哪个单选框被选中,一组单选框使用同一个索引变量value单选框选中时变量的值command单选框选中时执行的命令(函数)属 性描 述variable复选框索引变量,通过变量的值确定哪些复选框被选中;每个复选框使用不同的变量,使复选框之间相互独立onvalue复选框选中(有效)时变量的值offvalue复选框未选中(无效)时变量的值command复选框选中时执行的命令(函数)感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!11.2.5 Radiobutton和Checkbutton控件tkinter常用控件例:编写程序,实现通过单选框和复选框设置文字样式的功能。import tkinter as tk#导入tkinter模块重命名为tk#定义函数用于修改标签中文字的颜色def colorChecked(): labelHello.config(fg = color.get()#定义函数用于修改标签中文字的字体def typeChecked(): textType = typeBlod.get() + typeItalic.get()#两个复选框的值相加 if textType = 1:#单选typeBlod复选框 labelHello.config(font = (Arial, 12, bold) elif textType = 2:#单选typeItalic复选框 labelHello.config(font = (Arial, 12, italic) elif textType = 3:#同时选中两个复选框 labelHello.config(font = (Arial, 12, bold italic) else:#两个都不选 labelHello.config(font = (Arial, 12)感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!11.2.5 Radiobutton和Checkbutton控件tkinter常用控件top = tk.Tk()#创建tkinter对象top.title(Radio & Check Test)#设置窗口标题#创建标签labelHello = tk.Label(top, text = Check the format of text., height = 3, font=(Arial, 12)labelHello.pack()#显示标签color = tk.StringVar()#获取单选框输入#创建三个单选框并显示tk.Radiobutton(top, text = Red, variable = color, value = red, command = colorChecked).pack()tk.Radiobutton(top, text = Blue, variable = color, value = blue, command = colorChecked).pack()tk.Radiobutton(top, text = Green, variable = color, value = green, command = colorChecked).pack()#获取复选框输入typeBlod = tk.IntVar()typeItalic = tk.IntVar()#创建2个复选框tk.Checkbutton(top, text = Blod, variable = typeBlod, onvalue = 1, offvalue = 0, command = typeChecked).pack()tk.Checkbutton(top, text = Italic, variable = typeItalic, onvalue = 2, offvalue = 0, command = typeChecked).pack()top.mainloop()#进入主事件循环感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!11.2.5 Radiobutton和Checkbutton控件tkinter常用控件程序运行效果 提示可以使用tkinter.StringVar()创建与特定控件关联的字符串变量,使用tkinter.IntVar()创建与特定控件关联的整型变量。感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!11.2.6 Menu控件tkinter常用控件tkinter提供了Menu控件,用于实现顶级菜单、下拉菜单和弹出菜单。函数名称说 明menu.add_cascade()添加子选项menu.add_command()添加命令(label参数为显示内容)menu.add_separator()添加分隔线menu.add_checkbutton()添加确认按钮感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!11.2.6 Menu控件tkinter常用控件1顶级菜单创建一个顶级菜单,需要先创建一个菜单实例,然后使用add()方法将命令添加进去。例:创建顶级菜单实例。import tkinter#导入tkinter库#定义函数用于显示信息def callback(): print(单击了“显示”菜单!)window = tkinter.Tk()#创建tkinter对象window.title(标题)#设置标题window.geometry(200 x100)#设置窗口大小menubar = tkinter.Menu(window)#创建一个顶级菜单窗口#给菜单实例增加菜单项menubar.add_command(label=显示, command = callback)menubar.add_command(label=退出, command = window.quit)window.config(menu = menubar)#显示菜单window.mainloop()#进入主事件循环程序运行效果感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!11.2.6 Menu控件tkinter常用控件2下拉菜单创建一个下拉菜单,方法同创建顶级菜单类似,最主要的区别是下拉菜单需要添加到主菜单上。例:创建下拉菜单实例。import tkinterwindow = tkinter.Tk()window.title(标题)window.geometry(200 x100)#创建一个顶级菜单实例menubar = tkinter.Menu(window)#为每个子菜单实例添加菜单项#创建文件菜单项,并添加子菜单fmenu = tkinter.Menu(menubar)for each in 新建,打开,保存,另存为: fmenu .add_command(label = each)程序运行效果#创建视图菜单项,并添加子菜单vmenu = tkinter.Menu(menubar)for each in 复制,粘贴,剪切: vmenu.add_command(label = each)#创建编辑菜单项,并添加子菜单emenu = tkinter.Menu(menubar)for each in 默认视图,新式视图: emenu.add_command(label = each)#创建关于菜单项,添加子菜单amenu = tkinter.Menu(menubar)for each in 版权信息,联系我们: amenu.add_command(label = each)#为顶级菜单实例添加菜单,并绑定相应的子菜单实例menubar.add_cascade(label=文件,menu=fmenu)menubar.add_cascade(label=视图,menu=vmenu)menubar.add_cascade(label=编辑,menu=emenu)menubar.add_cascade(label=关于,menu=amenu)window.config(menu = menubar)#显示菜单window.mainloop()#进入主事件循环感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!11.2.6 Menu控件tkinter常用控件3弹出菜单创建一个弹出菜单的方法也是类似的,不过需要使用post()方法将其显示出来。例:创建弹出菜单实例。from tkinter import *root = Tk()#定义函数用于输出提示信息def hello(): print( 选择了菜单!)root.geometry(200 x100)#创建一个顶级菜单实例menu = Menu(root)menu.add_command(label=显示, command=hello)menu.add_command(label=退出, command=root.quit)程序运行效果#弹出菜单frame = Frame(root, width=512, height=512)frame.pack()#定义函数,调用post()方法显示def popup(event): menu.post(event.x_root, event.y_root)#绑定鼠标右键frame.bind(, popup)root.config(menu = menu)root.mainloop()11.3 事件绑定11.3.2 事件对象11.3.1 事件序列感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!事件绑定u 一个tkinter应用程序的大部分时间花费在事件循环上(通过mainloop()方法进入)。u 事件可以有多种来源,包括用户触发的鼠标、键盘操作或是系统事件。u tkinter提供了强大的事件处理机制,对于每个控件来说,可以通过bind()方法将函数或方法绑定到具体的事件上,其语法格式如下:控件对象名.bind(event, handler)event是tkinter已经定义好的事件(通过事件序列机制定义)。handler是一个处理函数或方法。感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!事件绑定例:捕获鼠标点击事件实例。from tkinter import *#导入tkinter库中所有内容root = Tk()#创建tkinter对象#定义函数,用于输出鼠标单击的坐标def callback(event): print (clicked at, event.x, event.y)frame = Frame(root, width=200, height=100)#创建窗体frame.bind(, callback)#绑定鼠标左键frame.pack()#显示窗体root.mainloop()#进入主事件循环程序运行效果感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!事件绑定11.3.1 事件序列tkinter使用一种称为事件序列的机制来允许用户定义事件,事件序列以字符串的形式表示,其语法格式如下:说明:u (1)事件序列必须用尖括号括起来;u (2)type字段是最重要的,它通常用于描述事件类型,如鼠标单击、键盘输入等;u (3)modifier字段是可选的,它通常用于描述组合键,如Ctrl、Shift等;u (4)detail字段也是可选的,它通常用于描述具体的按键,如Button-1表示单击鼠标左键。感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!事件绑定11.3.1 事件序列关 键 字含 义Button鼠标单击事件,detail部分指定具体哪个按键:鼠标左键,鼠标中键,鼠标右键。鼠标的位置x和y会被event对象传给handlerButtonRelease鼠标释放事件,在大多数情况下,比Button要更好用,因为如果当用户不小心按下鼠标,用户可以将鼠标移出控件再释放鼠标,从而避免不小心触发事件Configure控件大小改变事件,新的控件大小会存储在event对象中的width和height属性中传递Enter鼠标移入控件事件FocusIn获得焦点事件FocusOut失去焦点事件Leave鼠标移出控件事件KeyPress键盘按下事件,detail可指定具体的按键,例如,表示当大写字母H被按下时触发该事件,KeyPress也可以简写成KeyMotion鼠标移动事件,鼠标在控件内移动的整个过程均触发该事件type字段常用的关键字及含义:感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!事件绑定11.3.1 事件序列modifier字段常用的关键字及含义关 键 字含 义Alt当按下Alt键时Any表示任何类型的按键被按下时,例如,表示当用户按下任意键时触发事件Control当按下Ctrl键时Double当后续事件被连续触发两次时,例如,表示当用户双击鼠标左键时触发事件Lock当打开大写字母锁定键时Shift当按下Shift键时Triple跟Double类似,当后续事件被连续触发三次时感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!11.3.2 事件对象事件绑定当tkinter调用预先定义的函数时,会将事件对象(作为参数)传递给函数,事件对象的属性及含义如下表所示。属 性含 义widget产生事件的控件x, y当前鼠标的位置(相对于窗口左上角,单位为像素)x_root, y_root当前鼠标的位置(相对于屏幕左上角,单位为像素)char字符代码(仅限键盘事件),作为字符串keysym关键符号(仅限键盘事件)keycode关键代码(仅限键盘事件)num按钮数字(仅限鼠标按钮事件)width, height控件的新尺寸(Configure事件专属)type事件类型感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!11.3.2 事件对象事件绑定例:事件绑定实例。import tkinter#导入tkinter库window = tkinter.Tk()#创建tkinter对象window.title(标题)#设置标题window.geometry(200 x100)#设置窗口大小#鼠标单击绑定事件def func(event): print(单击!)window.bind(,func)#鼠标双击绑定事件def func1(event): print(双击!)window.bind(,func1)程序运行效果#鼠标移入绑定事件def func2(event): print(鼠标移入!)window.bind(,func2)#实现拖拽功能def func3(event): x=str(event.x_root) y=str(event.y_root) window.geometry(200 x100+x+y)window.bind(,func3)window.mainloop()11.4 布局管理器11.4.2 grid布局11.4.1 pack布局11.4.3 place布局感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!11.4.1 pack布局布局管理器pack布局是按添加的顺序排列控件,即向容器中添加控件,第一个添加的控件在最上方,然后依次向下排列。例:pack布局实例。from tkinter import *#导入tkinter库中所有内容root = Tk()#创建tkinter对象#创建三个标签Label(root, text = pack1, bg = red).pack()Label(root, text = pack2, bg = blue).pack()Label(root, text = pack3, bg = green).pack()root.mainloop()#进入主事件循环程序运行效果感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!11.4.1 pack布局布局管理器pack布局的常用属性属 性 名含 义取值说明fill设置控件是否向水平或垂直方向填充X(水平方向填充)、Y(垂直方向填充)、BOTH(水平和垂直)、NONE(不填充)expand设置控件是否展开,当值为YES时,side选项无效,控件显示在父容器中心位置;若fill选项为BOTH,则填充父控件的剩余空间;默认为不展开expand = YESexpand = NOside设置控件的对齐方式LEFT(左)、TOP(上)、RIGHT(右)、BOTTOM(下)ipadxipady设置x方向(或者y方向)内部间隙(与子控件之间的间隔)可设置数值(非负整数,单位为像素),默认是0padxpady设置x方向(或者y方向)外部间隙(与之并列的控件之间的间隔)可设置数值(非负整数,单位为像素),默认是0anchor锚选项,当可用空间大于所需求的尺寸时,决定控件被放置于容器的位置N,E,S,W,NW,NE,SW,SE,CENTER(默认值为CENTER),表示八个方向以及中心感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!11.4.1 pack布局布局管理器 提示pack布局适用于少量控件的排列,当界面复杂度增加时,要实现某种布局效果,需要分层来实现。例:分层实现较复杂布局。from tkinter import *root = Tk()root.title(Pack - Example)#使用Frame增加一层容器fm1 = Frame(root)#创建3个按钮,从上到下排列Button(fm1, text=Top).pack(side=TOP, anchor=W, fill=X)Button(fm1, text=Center).pack(side=TOP, anchor=W, fill=X)Button(fm1, text=Bottom).pack(side=TOP, anchor=W, fill=X)fm1.pack(side=LEFT, fill=Y)程序运行效果#使用Frame再增加一层容器fm2 = Frame(root)#创建3个按钮,从左到右排列Button(fm2, text=Left).pack(side=LEFT)Button(fm2, text=This is the Center button).pack(side=LEFT)Button(fm2, text=Right).pack(side=LEFT) fm2.pack(side=LEFT, padx=10)root.mainloop()感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!11.4.2 grid布局布局管理器grid布局又称为网格布局,是tkinter布局管理器中最灵活多变的布局方法。由于大多数程序界面都是矩形的,我们可以将它划分为由行和列组成的网格,然后根据行号和列号,将控件放置于网格之中。属 性 名含 义取值说明row,columnrow为行号,column为列号,设置控件放置的位置(第几行第几列)row和column的序号都从0开始sticky设置控件在网格中的对齐方式(类似于pack布局中的锚选项)N,E,S,W,NW,NE,SW,SE,CENTERr o w s p a n ,columnspan控件所跨越的行数或列数取值为跨越占用的行数或列数ipadx,ipady,padx,pady控件的内部和外部间隔距离与pack的该属性用法相同感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!11.4.2 grid布局布局管理器例:grid布局实例。from tkinter import *#导入tkinter库中所有内容root = Tk()#创建tkinter对象colours = red,green,orange,white,yellow,blue#定义颜色列表r = 0#循环创建标签和不同颜色的输入框for c in colours: Label(root,text=c, relief=RIDGE,width=15).grid(row=r,column=0) Entry(root,bg=c, relief=SUNKEN,width=10).grid(row=r,column=1) r = r + 1root.mainloop()#进入主事件循环程序运行效果感谢您下载包图网平台上提供的PPT作品,为了您和包图网以及原创作者的利益,请勿复制、传播、销售,否则将承担法律责任!包图网将对作品进行维权,按照传播下载次数进行十倍的索取赔偿!11.4.3 place布局布局管理器place布局使用控件坐标来放置控件的位置。属 性 名含 义取值说明x,y控件左上角的x,y坐标(绝对位置)整数,默认值为0,单位像素relx,rely控件相对于父容器的x,y坐标(相对位置)01之间浮点数,0.0表示左边缘(或上边缘),1.0表示右边缘(或下边缘)width,height控件的宽度和高度非负整数,单位像素relwidth,relheight控件相对于父容器的宽度和高度与relx和rely取值相似anchor锚选