Python语言编程基础图形界面编程课件_第1页
Python语言编程基础图形界面编程课件_第2页
Python语言编程基础图形界面编程课件_第3页
Python语言编程基础图形界面编程课件_第4页
Python语言编程基础图形界面编程课件_第5页
已阅读5页,还剩161页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Python程序设计教程授课教师:第1页,共166页。第8章 图形界面编程课程描述前面介绍的Python程序都只能输出字符串和数值,这显然不能满足实际应用的需求。Python提供了一些用于图形界面编程的模块,包括Tkinter模块、wxWidgets模块、easygui模块和wxpython模块。由于篇幅所限,本章以Tkinter为例介绍通过一些使用的Python工具包进行图形界面编程的方法。第2页,共166页。本章知识点8.1 常用Tkinter组件8.2 窗体布局8.3 Tkinter字体8.4 事件处理第3页,共166页。8.1 常用Tkinter组件8.1.1 弹出消息框8.1.2 创

2、建Windows窗口8.1.3 Label组件8.1.4 Button组件8.1.5 Canvas画布组件8.1.6 Checkbutton组件8.1.7 Entry组件8.1.8 Frame组件8.1.9 Listbox组件8.1.10 Menu组件8.1.11 Radiobutton组件8.1.12 Scale组件8.1.13 Text组件第4页,共166页。8.1.1 弹出消息框用tkinter.messagebox模块可以实现此功能。首先需要引入tkinter.messagebox模块,具体如下:from tkinter.messagebox import *第5页,共166页。8.1

3、.1 弹出消息框使用showinfo()函数可以弹出提示消息框,方法如下showinfo(title=标题,message=内容)第6页,共166页。【例8-1】 弹出一个提示消息框from tkinter.messagebox import *showinfo(title=提示,message=欢迎光临)运行程序会弹出如图8-1所示的消息框。消息框左侧有一个信息图标。第7页,共166页。2弹出警告消息框使用showwarning()函数可以弹出警告消息框,方法如下showwarning(title=标题,message=内容)第8页,共166页。【例8-2】 弹出一个警告消息框from tk

4、inter.messagebox import *showwarning(title=提示,message=请输入密码)第9页,共166页。3弹出错误消息框使用showerror()函数可以弹出错误消息消息框,方法如下showerror(title=标题,message=内容)第10页,共166页。【例8-3】 弹出一个警告消息框from tkinter.messagebox import *showerror(title=提示,message=密码错误)第11页,共166页。4弹出疑问消息框使用askquestion ()函数可以弹出一个包含“是”和“否”按钮的疑问消息框,方法如下askqu

5、estion (title=标题,message=内容)如果用户单击“是” 按钮,则askquestion ()函数返回YES(即字符串yes),如果用户单击“否” 按钮,则askquestion ()函数返回NO(即字符串no)。第12页,共166页。【例8-4】 弹出一个疑问消息框from tkinter.messagebox import *ret=askquestion (title=请确认,message=是否删除此用户?)if ret=YES: showinfo(title=提示,message=已删除)第13页,共166页。使用askyesnocancel()函数也可以使用ask

6、yesnocancel()函数弹出一个包含“是”和“否”按钮的疑问消息框,方法如下askyesnocancel(title=标题,message=内容)与askquestion ()函数不同的是,如果用户单击“是” 按钮,则askyesnocancel ()函数返回True,如果用户单击“否” 按钮,则askyesnocancel()函数返回False。第14页,共166页。【例8-5】from tkinter.messagebox import *ret=askyesno(title=请确认,message=是否删除此用户?)if ret=True: showinfo(title=提示,me

7、ssage=删除)第15页,共166页。5弹出带确定和取消按钮的疑问消息框使用askokcancel()函数可以弹出一个包含“确定”和“取消”按钮的疑问消息框,方法如下askokcancel(title=标题,message=内容)如果用户单击“确定” 按钮,则askokcancel()函数返回True,如果用户单击“取消”按钮,则askokcancel()函数返回False。第16页,共166页。【例8-6】from tkinter.messagebox import *ret=askokcancel(title=请确认,message=是否确定继续?)if ret=True: showin

8、fo(title=提示,message=继续)第17页,共166页。【例8-6】运行程序会弹出如图8-6所示的消息框。消息框左侧有一个疑问图标。如果用户单击“确定”按钮,则弹出如图8-7所示的消息框。第18页,共166页。6弹出带重试和取消按钮的疑问消息框使用askretrycancel()函数可以弹出一个包含“重试”和“取消”按钮的疑问消息框,方法如下askretrycancel(title=标题,message=内容)如果用户单击“重试” 按钮,则askretrycancel()函数返回True,如果用户单击“取消” 按钮,则askretrycancel()函数返回False。第19页,共

9、166页。【例8-7】from tkinter.messagebox import *ret=askokcancel(title=请确认,message=是否确定继续?)if ret=True: showinfo(title=提示,message=重试)第20页,共166页。8.1.2 创建Windows窗口1导入Tkinter模块在开发图形用户界面应用程序之前首先应该导入Tkinter模块,代码如下:from tkinter import *第21页,共166页。2创建窗口对象可以使用下面的方法创建一个Windows窗口对象:win = Tk();第22页,共166页。3显示Windows窗

10、口在创建Wiundows窗口对象win后,可以使用下面的代码显示Windows窗口:win.mainloop();mainloop()方法的功能是进入窗口的主循环,也就是显示窗口。第23页,共166页。【例8-8】 显示一个Windows窗口from tkinter import *win = Tk();win.mainloop();第24页,共166页。4设置窗口标题在创建Windows窗口对象后,可以使用title()方法设置窗口的标题,方法如下:窗口对象.title(标题字符串)第25页,共166页。【例8-9】from tkinter import *win = Tk();win.ti

11、tle(我的窗口)win.mainloop();第26页,共166页。5设置窗口大小在创建Windows窗口对象后,可以使用geometry()方法设置窗口的标题,方法如下:窗口对象.geometry(size)参数size用于指定窗口大小,格式如下:宽度x高度注意,这里x不是乘号,而是字母x。没错,xyz的x。第27页,共166页。【例8-10】from tkinter import *win = Tk();win. geometry(800 x600)win.mainloop();第28页,共166页。【例8-11】 from tkinter import *win = Tk();win.

12、geometry(800 x600)win.minsize(400,300)win.maxsize(1440,900)win.mainloop();第29页,共166页。8.1.3 Label组件1创建和显示Label对象创建Label对象的基本方法如下: Label对象 = Label(Tkinter Windows窗口对象,text = Label组件显示的文本)显示Label对象的方法如下:Label对象.pack()第30页,共166页。【例8-12】 使用Label组件的简单例子。from tkinter import *win = Tk();#创建窗口对象win.title(我的窗

13、口)#设置窗口标题l = Label(win,text = 我是Label组件)#创建Label组件l.pack()#显示Label组件win.mainloop();第31页,共166页。2使用Label组件显示图片第32页,共166页。第33页,共166页。【例8-13】from tkinter import *win = Tk();#创建窗口对象win.title(我的窗口)#设置窗口标题l1 = Label(win,bitmap = error)# 显示错误图标l1.pack()#显示Label组件l2 = Label(win,bitmap = hourglass)# 显示沙漏图标l2.

14、pack()#显示Label组件l3 = Label(win,bitmap = info)# 显示信息图标l3.pack()#显示Label组件l4 = Label(win,bitmap = questhead)# 显示信息图标l4.pack()#显示Label组件l5 = Label(win,bitmap = question)# 显示疑问图标l5.pack()#显示Label组件l6 = Label(win,bitmap = warning)# 显示警告图标l6.pack()#显示Label组件l7 = Label(win,bitmap = gray12)# 显示灰度背景图标gray12l

15、7.pack()#显示Label组件第34页,共166页。l8 = Label(win,bitmap = gray25)# 显示灰度背景图标gray25l8.pack()#显示Label组件l9 = Label(win,bitmap = gray50)# 显示灰度背景图标gray50l9.pack()#显示Label组件l10 = Label(win,bitmap = gray75)# 显示灰度背景图标gray75l10.pack()#显示Label组件win.mainloop();第35页,共166页。设置窗口标题第36页,共166页。【例8-14】from tkinter import *

16、win = Tk();#创建窗口对象win.title(我的窗口)#设置窗口标题bm = PhotoImage(file = C:Python34LibidlelibIconsidle_48.png)label = Label(win,image = bm)label.bm = bmlabel.pack()#显示Label组件win.mainloop();第37页,共166页。3设置Label组件的颜色【例8-15】 设置Label组件的前景色和背景色。from tkinter import *win = Tk();#创建窗口对象label = Label(win, fg = red,bg =

17、 blue, text=有颜色的字符串)label.pack()#显示Label组件win.mainloop();第38页,共166页。其他常用的Lable组件属性属 性说明width宽度height高度compound指定文本与图像如何在Label上显示,缺省为None。 当指定image/bitmap时,文本(text)将被覆盖,只显示图像。可以使用的值如下: left,图像居左。 Right图像居右。 top:图像居上。 bottom:图像居下。 center:文字覆盖在图像上wraplength指定多少单位后开始换行,用于多行显示文本justify指定多行的对齐方式,可以使用的值为LE

18、FT(左对齐)或RIGHT(右对齐)ahchor指定文本(text)或图像(bitmap/image)在Label中的显示位置。可用值如下: e,垂直居中,水平居右; w,垂直居中,水平居左; n,垂直居上,水平居中 s,垂直居下,水平居中 ne,垂直居上,水平居右 se,垂直居下,水平居中 sw,垂直居下,水平居左 nw,垂直居上,水平居左 center垂直居中,水平居中第39页,共166页。8.1.4 Button组件1创建和显示Button对象创建Button对象的基本方法如下: Button对象 = Button (Tkinter Windows窗口对象,text = Button组件

19、显示的文本, command=单击按钮所调用的)显示Button对象的方法如下:Button对象.pack()第40页,共166页。【例8-16】 使用Button组件的简单例子。from tkinter import *from tkinter.messagebox import *def CallBack(): showinfo(title=,message=点我干嘛)win = Tk();#创建窗口对象win.title(使用Button组件的简单例子)#设置窗口标题b = Button (win,text = 点我啊, command=CallBack)#创建Button组件b.pac

20、k()#显示Button组件win.mainloop();第41页,共166页。【例8-16】的运行结果第42页,共166页。2使用Button组件显示图片除了显示文本,还可以使用image属性和bm属性显示自定义图片,方法如下:bm = PhotoImage(file = 文件名)b = Button (win,text = 点我啊, command=CallBack,image = bm)#创建Button组件b.bm = bm第43页,共166页。【例8-17】from tkinter import *from tkinter.messagebox import *def CallBac

21、k(): showinfo(title=,message=点我干嘛)win = Tk();#创建窗口对象win.title(使用Button组件的简单例子)#设置窗口标题bm = PhotoImage(file = C:Python34LibidlelibIconsidle_48.png)b = Button (win,text = 点我啊, command=CallBack,image = bm)#创建Button组件b.bm = bmb.pack()#显示Button组件win.mainloop();第44页,共166页。第45页,共166页。3设置Button组件的大小【例8-18】 设

22、置Button组件的大小。from tkinter import *from tkinter.messagebox import *def CallBack(): showinfo(title=,message=点我干嘛)win = Tk();#创建窗口对象b = Button (win,text = 点我啊, command=CallBack, width=100, height=50)#创建Button组件b.pack()#显示Button组件第46页,共166页。【例8-18】的运行结果第47页,共166页。其他常用的Button组件属性属 性说明bitmap指定按钮上显示的位图comp

23、ound指定文本与图像如何在Label上显示,缺省为None。 当指定image/bitmap时,文本(text)将被覆盖,只显示图像。可以使用的值如下: left,图像居左。 Right图像居右。 top:图像居上。 bottom:图像居下。 center:文字覆盖在图像上wraplength指定多少单位后开始换行,用于多行显示文本bg设置背景颜色fg设置前景颜色state设置组件状态。可以取值为正常(NORMAL)、激活(ACTIVE)和禁用(DISABLED)bd设置按钮的边框大小;缺省为1或2个像素第48页,共166页。【例8-19】from tkinter import *from

24、tkinter.messagebox import *win = Tk();#创建窗口对象b1 = Button (win,text = 粗边框的按钮,bd=5)b1.pack()#显示Button组件b2 = Button (win,text = 不能点击的按钮,state= DISABLED)b2.pack()#显示Button组件第49页,共166页。【例8-19】的运行结果第50页,共166页。8.1.5 Canvas画布组件1创建和显示Canvas对象可以使用下面的方法创建一个Canvas对象。Canvas对象 = Canvas (父窗口, 选项, . )显示Canvas对象的方法如

25、下。Canvas对象.pack()第51页,共166页。创建Canvas对象时的常用选项属 性说明bd指定画布的边框宽度,单位是像素bg指定画布的背景颜色confine指定画布在滚动区域外是否可以滚动。默认为True,表示不能滚动cursor指定画布中的鼠标指针,例如arrow, circle, dotheight指定画布的高度highlightcolor选中画布时的背景色relief指定画布的边框样式,可选值包括SUNKEN, RAISED, GROOVE, and RIDGEscrollregion指定画布的滚动区域的元组(w, n, e, s)width指定画布的宽度第52页,共166页

26、。【例8-20】from tkinter import *root = Tk()cv = Canvas(root, bg = red, width = 200, height = 100) cv.pack()root.mainloop()第53页,共166页。【例8-20】的运行结果第54页,共166页。2绘制线条使用create_line()方法可以创建一个线条对象,具体语法如下:line = canvas.create_line(x0, y0, x1, y1, ., xn, yn, 选项)参数x0, y0, x1, y1, ., xn, yn是线段的端点第55页,共166页。创建矩形对象时

27、的常用选项属 性说明width指定线段的宽度arrow指定直线是否使用箭头,可选值如下: none,没有箭头; first,起点有箭头; last,终点有箭头; both,两端都有箭头arrowshape设置箭头的形状,由3个整数构成,分别代表填充长度、箭头长度和箭头宽度。例如,arrowshape = 40 40 10fill指定线段的颜色dash指定线段为虚线第56页,共166页。【例8-21】from tkinter import *root = Tk()cv = Canvas(root, bg = white, width = 200, height = 100) cv. create

28、_line(10,10,100,80,width=2, dash=7)cv.pack()root.mainloop()第57页,共166页。【例8-22】 from tkinter import *root = Tk()cv = Canvas(root, bg = white, width = 200, height = 100)cv.create_line(10, 10, 100, 10, arrow=none)cv.create_line(10, 20, 100, 20, arrow=first)cv.create_line(10, 30, 100, 30, arrow=last)cv.c

29、reate_line(10, 40, 100, 40, arrow=both)cv.pack()第58页,共166页。3绘制矩形Canvas对象. create_rectangle(矩形左上角的x坐标, 矩形左上角的y坐标, 矩形右下角的x坐标, 矩形右下角的y坐标, 选项, .)第59页,共166页。创建矩形对象时的常用选项属 性说明outline指定边框颜色fill指定填充颜色width指定边框的宽度dash指定边框为虚线stipple使用指定自定义画刷填充矩形第60页,共166页。【例8-23】 from tkinter import *root = Tk()cv = Canvas(ro

30、ot, bg = white, width = 200, height = 100) cv.create_rectangle(10,10,100,80,outline = blue, fill = red, width=2)cv.pack()root.mainloop()第61页,共166页。【例8-24】from tkinter import *root = Tk()cv = Canvas(root, bg = white, width = 200, height = 100) cv.create_rectangle(10,10,100,80,outline = blue, fill = w

31、hite, width=2, dash=7)cv.pack()root.mainloop()第62页,共166页。【例8-25】from tkinter import *root = Tk()cv = Canvas(root, bg = white, width = 200, height = 100) cv.create_rectangle(10,10,100,80,outline = blue, fill = red, width=2, stipple = gray12,)cv.pack()root.mainloop()第63页,共166页。4绘制弧使用create_arc()方法可以创建

32、一个弧对象,可以是一个和弦、饼图扇区或者一个简单的弧、具体语法如下:Canvas对象. create_arc(弧外框矩形左上角的x坐标, 弧外框矩形左上角的y坐标, 弧外框矩形右下角的x坐标, 弧外框矩形右下角的y坐标, 选项, .)第64页,共166页。创建弧对象时的常用选项属 性说明outline指定边框颜色fill指定填充颜色width指定边框的宽度start起始弧度extent终止弧度第65页,共166页。【例8-26】 绘制一个指定30度的弧from tkinter import *root = Tk()cv = Canvas(root, bg = white, width = 20

33、0, height = 100) cv.create_arc(10,10,100,80,outline = blue, fill = red, width=2, start=0, extent =30)cv.pack()root.mainloop()第66页,共166页。运行结果第67页,共166页。【例8-27】 绘制一个圆inter import *root = Tk()cv = Canvas(root, bg = white, width = 200, height = 100) cv.create_arc(10,10,100,100,outline = blue, fill = red

34、, width=2,start=0, extent =359)cv.pack()root.mainloop()第68页,共166页。5绘制多边形使用create_polygon()方法可以创建一个多边形对象,可以是一个三角形、矩形或者任意一个多边形,具体语法如下:Canvas对象. create_polygon (顶点1的x坐标, 顶点1的y坐标, 顶点2的x坐标, 顶点2的y坐标, , 顶点n的x坐标, 顶点n的y坐标, 选项, .)第69页,共166页。创建多边形对象时的常用选项属 性说明outline指定边框颜色fill指定填充颜色width指定边框的宽度smooth指定多边形的平滑程度

35、。等于0表示多边形的边是折线。等于1表示多边形的边是平滑曲线第70页,共166页。【例8-28】 绘制一个三角形。from tkinter import *root = Tk()cv = Canvas(root, bg = white, width = 200, height = 100) cv.create_polygon (100,5,0,80,200,80, outline = blue, fill = red, width=2)cv.pack()root.mainloop()第71页,共166页。【例8-28】的运行结果第72页,共166页。6绘制椭圆使用create_oval()方法

36、可以创建一个椭圆对象,具体语法如下:Canvas对象. create_oval(包裹椭圆的矩形的左上角x坐标, 包裹椭圆的矩形的左上角y坐标, 椭圆的长度, 椭圆的长度, 选项, .)第73页,共166页。创建椭圆对象时的常用选项属 性说明outline指定边框颜色fill指定填充颜色width指定边框的宽度第74页,共166页。【例8-30】 绘制一个长100、宽80的椭圆。from tkinter import *root = Tk()cv = Canvas(root, bg = white, width = 200, height = 100) cv.create_oval (10,10

37、,100,50, outline = blue, fill = red, width=2)cv.pack()root.mainloop()第75页,共166页。【例8-30】的运行结果第76页,共166页。【例8-31】from tkinter import *root = Tk()cv = Canvas(root, bg = white, width = 200, height = 100) cv.create_oval (10,10,100,100, outline = blue, fill = red, width=2)cv.pack()root.mainloop()第77页,共166页

38、。【例8-31】的运行结果第78页,共166页。7绘制文字使用create_text()方法可以创建一个文字对象,具体语法如下:文字对象 = Canvas对象.create_text(文本左上角的x坐标,文本左上角的y坐标), 选项, .)第79页,共166页。创建文字对象时的常用选项属 性说明text文字对象的文本内容fill指定文字颜色anchor控制文字对象的位置,w表示左对齐,e表示右对齐,n表示顶对齐,s表示底对齐,nw表示左上对齐, sw表示左下对齐, se表示右下对齐, ne表示右上对齐, center表示居中对齐。默认值为centerjustify设置文字对象中文本的对齐方式。

39、left表示左对齐,right表示右对齐,center表示居中对齐。默认值为center第80页,共166页。【例8-32】 绘制一段文字from tkinter import *root = Tk()cv = Canvas(root, bg = white, width = 200, height = 100) cv.create_text(10,10), text = Hello Python, fill = red, anchor=nw)cv.create_text(10,20), text = 你好,Python!, fill = blue, anchor=se)cv.pack()ro

40、ot.mainloop()第81页,共166页。【例8-32】的运行结果第82页,共166页。select_from()方法和select_to()方法select_from()方法用于指定选中文本的起始位置,具体用法如下:Canvas对象. select_from(文字对象, 选中文本的起始位置)select_to()方法用于指定选中文本的结束位置,具体用法如下:Canvas对象. select_from(文字对象, 选中文本的结束位置)第83页,共166页。【例8-33】 选中文字的例子from tkinter import *root = Tk()cv = Canvas(root, bg

41、 = white, width = 200, height = 100) txt = cv.create_text(10,10), text = Hello Python, fill = red, anchor=nw)# 设置文本的选中起始位置 cv.select_from(txt,6) # 设置文本的选中结束位置cv.select_to(txt,11)cv.pack()root.mainloop()第84页,共166页。【例8-33】的运行结果第85页,共166页。8绘制图像使用create_bitmap()方法可以绘制Python内置的位图,具体方法如下:Canvas对象. create_

42、bitmap(位图左上角的x坐标, 位图左上角的y坐标),bitmap =位图字符串)第86页,共166页。【例8-34】from tkinter import *root = Tk()cv = Canvas(root, bg = white, width = 200, height = 100) d = 1:error,2:info,3:question,4:hourglassfor in d: cv.create_bitmap(20*i,20*i),bitmap = di)cv.pack()root.mainloop()第87页,共166页。【例8-34】的运行结果第88页,共166页。【

43、例8-35】from tkinter import *root = Tk()cv = Canvas(root, bg = white, width = 200, height = 100) img = PhotoImage(file = C:Python34LibidlelibIconspython.gif)cv.create_bitmap(80,20*i), image = img)cv.pack()root.mainloop()第89页,共166页。【例8-35】的运行结果第90页,共166页。9修改图形对象的坐标使用coords()方法可以修改图形对象的坐标,具体方法如下:Canvas对

44、象.coords(图形对象, (图形左上角的x坐标, 图形左上角的y坐标, 图形右下角的x坐标, 图形右下角的y坐标)第91页,共166页。【例8-36】from tkinter import *root = Tk()# 创建一个Canvas,设置其背景色为白色cv = Canvas(root, bg = white, width = 200, height = 100) rt= cv.create_rectangle(10,10,110,110,outline=red,stipple=gray12,fill=green)cv.pack()# 重新设置rt的坐标cv.coords(rt,(40

45、,40,200,100)root.mainloop()第92页,共166页。第93页,共166页。10移动指定图形对象使用move()方法可以修改图形对象的坐标,具体方法如下:Canvas对象. move (图形对象, x坐标偏移量, y坐标偏移量)第94页,共166页。【例8-37】from tkinter import *root = Tk()# 创建一个Canvas,设置其背景色为白色 cv = Canvas(root, bg = white, width = 200, height = 100) rt1 = cv.create_rectangle(10,10,110,110,outli

46、ne=red,stipple=gray12,fill=green)cv.pack()rt2 = cv.create_rectangle(10,10,110,110,outline=blue)# 移动rt1 cv.move(rt1,20,-10)cv.pack()root.mainloop()第95页,共166页。没有cv.coords()语句时【例8-37】的运行结果第96页,共166页。11删除图形对象from tkinter import *root = Tk()# 创建一个Canvas,设置其背景色为白色 cv = Canvas(root, bg = white, width = 200

47、, height = 100) rt1 = cv.create_rectangle(10,10,110,110,outline=red,stipple=gray12, fill=green)cv.pack()rt2 = cv.create_rectangle(10,10,110,110,outline=blue)# 删除rt1 cv.delete(rt1)cv.pack()root.mainloop()第97页,共166页。【例8-38】的运行结果第98页,共166页。12缩放图形对象使用scale()方法可以缩放图形对象,具体方法如下:Canvas对象.scale(图形对象, x轴偏移量,y

48、轴偏移量,x轴缩放比例,y轴缩放比例)第99页,共166页。【例8-39】 缩放一个矩形对象from tkinter import *root = Tk()# 创建一个Canvas,设置其背景色为白色 cv = Canvas(root, bg = white, width = 200, height = 300) rt1 = cv.create_rectangle(10,10,110,110,outline=red,stipple=gray12, fill=green)cv.scale(rt1,0,0,1,2)cv.pack()root.mainloop()第100页,共166页。【例8-38

49、】的运行结果第101页,共166页。13为图形对象指定标记(tag)在创建图形对象时可以使用属性tags设置图形对象的标记(tag),例如:rt = cv.create_rectangle(10,10,110,110, tags = r1)上面的语句指定矩形对象rt具有一个tag r1。也可以同时设置多个标记(tag),例如:rt = cv.create_rectangle(10,10,110,110, tags = (r1,r2,r3)第102页,共166页。find_withtag()方法使用find_withtag()方法可以获取到指定tag的图形对象,然后设置图形对象的属性。find_

50、withtag()方法的语法如下:Canvas对象.find_withtag(tag名)find_withtag()方法返回一个图形对象数组,其中包含所有具有tag名的图形对象。使用find_withtag()方法可以设置图形对象的属性,语法如下:Canvas对象. find_withtag(图形对象, 属性1=值1, 属性2=值2 )第103页,共166页。【例8-40】 使用属性tags设置图形对象标记的例子from tkinter import *root = Tk()# 创建一个Canvas,设置其背景色为白色 cv = Canvas(root, bg = white, width =

51、 200, height = 200) # 使用tags指定一个tag(r1) rt = cv.create_rectangle(10,10,110,110, tags = (r1,r2,r3)cv.pack()cv.create_rectangle(20,20,80,80, tags = r3)# 将所有与tag(r3)绑定的item边框颜色设置为蓝色 for item in cv.find_withtag(r3): cv.itemconfig(item,outline = blue)第104页,共166页。【例8-40】的运行结果第105页,共166页。8.1.6 Checkbutton组

52、件1创建和显示Button对象创建Checkbutton对象的基本方法如下: Checkbutton对象 = Checkbutton(Tkinter Windows窗口对象,text = Checkbutton组件显示的文本, command=单击Checkbutton按钮所调用的回调函数)显示Checkbutton对象的方法如下:Checkbutton对象.pack()第106页,共166页。【例8-41】from tkinter import *from tkinter.messagebox import *def CallBack(): showinfo(title=,message=点

53、我干嘛)win = Tk();#创建窗口对象win.title(使用Checkbutton组件的简单例子)#设置窗口标题b = Checkbutton (win,text = Python Tkinter, command=CallBack)#创建Checkbutton组件b.pack()#显示Checkbutton组件win.mainloop();第107页,共166页。【例8-41】的运行结果第108页,共166页。2获取Checkbutton组件是否被选中Checkbutton组件有On和Off两个状态,值,缺省状态下On为1,Off为0。也可以使用onvalue 设置Checkbutt

54、on组件被选中时的值,使用offvalue 可以设置Checkbutton组件被取消选中时的值,使用例如:Checkbutton(root, text = 喜欢, onvalue = 1, offvalue = 0,command = CallBack).pack() root.mainloop()为了获取Checkbutton组件是否被选中,需要使用variable 属性为Checkbutton组件指定一个对应的变量,例如:v = StringVar()Checkbutton(root, variable =v, text = 喜欢, onvalue = 1, offvalue = 0,co

55、mmand = CallBack).pack()root.mainloop()第109页,共166页。【例8-42】 使用一个Button组件获取Checkbutton组件的状态from tkinter import *root = Tk()#将一字符串与Checkbutton的值绑定,每次点击Checkbutton,将打印出当前的值v = StringVar()def callCheckbutton(): print(v.get()第110页,共166页。Checkbutton(root, variable = v, text = checkbutton value, onvalue = p

56、ython, #设置On的值 offvalue = tkinter, #设置Off的值 command = callCheckbutton).pack()b = Button (root,text = 获取Checkbutton状态, command=callCheckbutton, width=20)#创建Button组件v.set(python)b.pack()#显示Button组件root.mainloop()第111页,共166页。8.1.7 Entry组件1创建和显示Entry对象创建Entry对象的基本方法如下: Entry对象 = Entry (Tkinter Windows窗口

57、对象)显示Entry对象的方法如下:Entry对象.pack()第112页,共166页。【例8-42】 使用Entry组件的简单例子。from tkinter import *win = Tk();#创建窗口对象win.title(使用Entry组件的简单例子)#设置窗口标题entry = Entry (win)#创建Entry组件entry.pack()#显示Entry组件win.mainloop();第113页,共166页。【例8-42】的运行结果第114页,共166页。2获取Entry组件的内容e = StringVar()Checkbutton(root, textvariable =

58、e).pack()root.mainloop()第115页,共166页。【例8-43】from tkinter import *root = Tk()#将一字符串与Entry的值绑定e = StringVar()def callbutton(): print(e.get()第116页,共166页。root.title(使用Entry组件的简单例子)#设置窗口标题entry = Entry (root, textvariable = e).pack()b = Button (root,text = 获取Entry组件的内容, command=callbutton, width=20)#创建But

59、ton组件e.set(python)b.pack()#显示Button组件root.mainloop()第117页,共166页。8.1.8 Frame组件1创建和显示Frame对象创建Frame对象的基本方法如下: Frame对象 = Frame (Tkinter Windows窗口对象, height = 高度,width = 宽度,bg = 背景色)显示Entry对象的方法如下:Frame对象.pack()第118页,共166页。【例8-44】 使用Frame组件的简单例子。from tkinter import *win = Tk();#创建窗口对象win.title(使用Frame组件

60、的简单例子)#设置窗口标题fm = Frame (win, height = 20,width = 400,bg =green)#创建Frame组件fm.pack()#显示Frame组件win.mainloop();第119页,共166页。【例8-44】的运行结果第120页,共166页。2向Frame组件中添加组件在创建组件时可以指定其容器为Frame组件,例如:Label(Frame对象,text = Hello).pack()第121页,共166页。【例8-45】from tkinter import *win = Tk();#创建窗口对象win.title(使用Frame组件的例子)#设

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论