版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章图形用户界面设计常州工业职业技术学院119五月2026Python程序设计丁辉袁凯烽商俊燕韩少勇范晓玲郝亚平王霞俊吴春晖目录
Contents01常用GUI模块简介02tkinter模块03turtle库040507图形用户界面设计精选案例小结2常用GUI模块简介014tkintertkinter是Python内置的GUI模块。tkinter可用于Windows、Linux、Unix、Macintosh操作系统,而且显示风格是本地化的。tkinter使用简单,具有了GUI的所有特征,自带的IDLE就是采用它编写的,此外tkinter在一些小型应用程序开发上也是很有优势的,而且开发速度快。wxPythonwxPython是近几年比较流行的GUI跨平台、开源的第三方工具包,可以很方便地创建完整的、功能键全的GUI用户界面,其功能强于tkinter。wxPython提供超过200个的类,采用面向对象的编程风格,设计框架类似于MFC。对于大型的GUI应用,wxPython具有很强的优势。PyQtPyQt是一个支持多平台的工具包,可以运行在Unix、Windows和Macintosh等操作系统上。PyQt是Python下的一套图形界面接口库,在Python中调用Qt(是一个跨平台的GUI应用程序框架)图形库和控件。使用PyQt的优点在于可以使用Qt成熟的IDE(如QtCreator)进行图形界面设计,并自动生成可执行的Python代码。
PyQt采用双许可证,开发人员可以选择GPL(GNUGeneralPublicLicense协议)和商业许可。从PyQt的版本4开始,GPL许可证可用于所有支持的平台。常用GUI模块简介5GtkPyGtk让你用Python轻松创建具有GUI的程序。底层的GTK+提供了各式的可视元素和功能,如果需要,你能开发在GNOME桌面系统运行的功能完整软件。GTK+(GIMPToolkit)是一套在GIMP的基础上发展而来的高级的、可伸缩的、现代化、跨平台图形工具包,提供一整套完备的图形构件,适用于大大小小各种软件工程项目,不论是小到只需要一个窗口,还是复杂得如桌面环境。简单来说,GTK+是一种函数库,是用来帮助制作图形交互界面的。同时,它遵循LGPL许可证,所以用户可以用它来开发开源软件、自由软件,甚至是封闭源代码的商业软件,而不用花费任何钱来购买许可证和使用权。常用GUI模块简介tkinter模块027
使用tkinter可以编写完整的GUI程序。在tkinter中,可以直接使用文本框、按钮、标签等控件(widget)进行GUI编程。导入tkinter模块创建一个顶级(主)窗口,用于容纳所有的控件添加控件,并且以主窗口或者容器控件作为父控件,同时设置相应的属性及布局关联控件的事件或者命令,便于响应用户操作或者其它触发源的请求执行主事件循环,等待响应用户触发事件>>>importtkinter#导入tkinter模块>>>root=tkinter.Tk()#创建主窗口>>>label=tkinter.Label(root,text="Helloworld!")#添加标签对象>>>label.pack(padx=20,pady=20)#标签放置的位置>>>root.mainloop()#等待响应用户事件创建PythonGUI的基本步骤1.tkinter控件8Tkinter常用控件控
件描
述Button按钮控件;在窗口中显示按钮Canvas画布控件;用于显示图形元素如线条或文本等Checkbutton多选框控件;用于在窗口中提供多项选择框Entry输入控件;用于显示简单的文本输入内容Frame框架控件;在窗口中显示一个矩形区域,多用来作为容器Label标签控件;可以显示文本和图片Listbox列表框控件;在Listbox小窗口中显示一个字符串列表供用户选择Menubutton菜单按钮控件;用于显示菜单项Menu菜单控件;显示菜单栏,下拉菜单和弹出菜单Message消息控件;用于显示多行文本,与label比较类似Radiobutton单选按钮控件;显示一个单选的按钮状态Scale范围控件;显示一个数值刻度,限定数字区间Scrollbar滚动条控件;当内容超过可视化区域时使用,如列表框Text文本控件;用于显示多行文本Toplevel容器控件;用来提供一个单独的对话框,和Frame比较类似Spinbox输入控件;与Entry类似,但是可以指定输入范围值PanedWindowPanedWindow是一个窗口布局管理的插件,可以包含一个或者多个子控件LabelFramelabelframe是一个简单的容器控件;常用于复杂的窗口布局tkMessageBox用于显示应用程序的消息框1.tkinter控件9调用tkinter控件的方法为:tkinter.Widget(容器,选项,……)如:label=tkinter.Label(root,text=“Helloworld!”)控件选项还可以用以下的方式进行设置与修改:label[“text”]=“Hellopython!”Label.config(text=“Hellopython!”)1.tkinter控件Label控件的选项控件10tkinter布局管理器tkinter对于窗口内控件的布局,专门设置了3个布局管理器来管理控件的排列,分别是pack、grid、place。pack管理器pack管理器布局控件的方法比较简单,是按添加顺序依次排列控件。默认是根据控件的大小来自动安排控件的位置。常用参数如下表所示。名称描
述取值范围expand告诉窗口管理器将父控件的额外空间是否填满。当值为”yes”时,side选项无效。控件显示在父控件中心位置;若fill选项为”both”,则填充父控件的剩余空间。“yes”/自然数,“no”/0(默认值为”no”或0)fill告诉窗口管理器该控件将填充整个分配给它的空间,即填充x(y)方向上的空间。当属性side=”top”或”bottom”时,填充x方向;当属性side=”left”或”right”时,填充”y”方向;当expand选项为”yes”时,填充父控件的剩余空间。“x”,“y”,“both”(默认值为待选)ipadx,ipady控件内部在x(y)方向上填充的空间大小,默认单位为像素。非负浮点数(默认值为0.0)padx,pady控件外部在x(y)方向上填充的空间大小,默认单位为像素,可选单位为c(厘米)、m(毫米)、i(英寸)、p(打印机的点,即1/27英寸),用法为在值后加以上一个后缀既可。非负浮点数(默认值为0.0)side定义停靠在父控件的哪一边上。“top”,“bottom”,“left”,“right”(默认为”top”)anchor对齐方式。左对齐”w”,右对齐”e”,顶对齐”n”,底对齐”s”。“n”,“s”,“w”,“e”,“nw”,“sw”,“se”,“ne”,(默认为”center”)1.tkinter控件nwnnewcentereswsse11【例8-1】下面的程序演示了pack管理器对控件的布局管理。1.tkinter控件importtkinterastkroot=tk.Tk()#设置窗口初始尺寸是200x200,在屏幕左上角20x20的位置开始显示root.geometry("200x200+20+20")#定义一个按钮,右对齐,红色文字,宽度为5button=tk.Button(root,text="OK",width=5,fg='red')button.pack(anchor=tk.E,padx=10,pady=20)#定义一个输入框,左对齐,宽度为20entry=tk.Entry(root,bg='yellow',width=10)entry.pack(anchor=tk.W,pady=20)#定义一个标签lable=tk.Label(root,text="HelloPython!“,bg="blue",fg="yellow",width=20)lable.pack(side='right')root.mainloop()
布局管理器的使用方法:WidgetObject.pack(选项,……)WidgetObject.grid(选项,……)WidgetObject.place(选项,……)控件对象12grid管理器grid管理器是采用类似表格的结构组织控件,使用起来非常灵活,用其设计对话框和带有滚动条的窗体效果最好。grid采用行列确定位置,行列交汇处为一个单元格。每一列中,列宽由这一列中最宽的单元格确定。每一行中,行高由这一行中最高的单元格决定。grid管理器常用参数如下表。名称描述取值范围column控件所置单元格的列号。自然数(起始默认值为0,而后累加)ipadx,ipady控件内部在x(y)方向上填充的空间大小。非负浮点数(默认值为0.0)padx,pady控件外部在x(y)方向上填充的空间大小。非负浮点数(默认值为0.0)row控件所置单元格的行号。自然数(起始默认值为0,而后累加)sticky控件紧靠所在单元格的某一边角。“n”,“s”,“w”,“e”,“nw”,“sw”,“se”,“ne”,(默认为”center”)1.tkinter控件nwnnewcentereswsse13【例8-2】以下程序演示了grid布局管理器的布局管理。可见grid布局管理使用方便,简单灵活。1.tkinter控件#eg8_2.pyimporttkinterastkroot=tk.Tk()root.geometry("200x160+40+40")#两个标签分别放置在第0和1行的第0列label_1=tk.Label(root,text="帐号:")label_1.grid(row=0,pady=20)label_2=tk.Label(root,text="密码:")label_2.grid(row=1)#两个输入框分别放置在第0和1行的第1列entry_1=tk.Entry(root)entry_1.grid(row=0,column=1)entry_2=tk.Entry(root)entry_2.grid(row=1,column=1)#按钮放置在第4行第2列button=tk.Button(root,text='登录',command=root.quit)button.grid(row=4,column=1,pady=20)root.mainloop()14place管理器
place布局管理器可以显式地指定控件的绝对位置或相对于其它控件的位置。place参数如下表。名称描述取值范围anchor对齐方式,左对齐”w”,右对齐”e”,顶对齐”n”,底对齐”s”,居中”center”。“n”,“s”,“w”,“e”,“nw”,“sw”,“se”,“ne”,(默认为”center”)x控件左上角的x坐标。非负浮点数y控件左上角的y坐标。非负浮点数relx控件相对于窗口的x坐标0~1的小数rely控件相对于窗口的y坐标0~1的小数width控件的宽度非负浮点数height控件的高度非负浮点数relwidth控件相对于窗口的宽度0~1的小数relheight控件相对于窗口的高度0~1的小数1.tkinter控件15#eg8_3.pyfromtkinterimport*root=Tk()defcallback():print("正中靶心")#relx表示子控件相对于父控件在x方向的位置,0表示最左边#1表示最右边,0.5表示中间位置#rely表示子控件相对于父控件在y方向的位置,0表示最上边#1表示最下边,0.5表示中间位置Button(root,text=‘点我试试!’,command=callback).place(relx=0.5,rely=0.5,anchor=CENTER)root.mainloop()1.tkinter控件【例8-3】下面的程序演示了place的应用。通过relx、rely、anchor的设置,使按钮显示在窗口的中心位置。16tkinter中的事件是指各个控件上发生的各种键盘、鼠标和窗口事件。对于按钮控件、菜单控件等可以在创建时通过command参数指定其事件处理函数。除控件所触发的事件外,其它的事件可归结为鼠标事件、键盘事件和窗口事件,如右击弹出菜单时,需要处理右击事件。①鼠标事件
鼠标事件主要是指鼠标按键的按下、释放,鼠标滚轮的滚动,鼠标指针移进、移出控件等所触发的事件。鼠标事件意
义<Button-1>表示鼠标左键按下,<Button-2>表示中键,<Button-3>表示右键<ButtonPress-1>同<Button-1><ButtonRelease-1>表示左键释放,其它同理<B1-Motion>表示按住鼠标左键拖动,其它同理<Double-Button_1>表示双击鼠标左键<Enter>表示鼠标指针进入某一控件区域<Leave>表示鼠标指针离开某一控件区域<MouseWheel>表示鼠标滚轮动作2.响应操作事件17键盘事件键盘事件主要指键盘键的按下、释放等所触发的事件。键盘事件意
义<KeyPress-A>表示按下A键,可换成按下其它字母键<Alt-KeyPress-A>表示同时按下Alt和A键,其它键同理<Control-KeyPress-A>表示同时按下Control和A键,其它键同理<Shift-KeyPress-A>表示同时按下Shift和A键,其它键同理<Double-KeyPress-A>表示快速地按两下A键,其它键同理<Lock-KeyPress-A>表示CapsLock打开后按下A键,其它键同理2.响应操作事件18③窗口事件窗口事件是指改变窗口大小、控件状态等变化所触发的事件。窗口事件意
义Activate当控件由不可用转为可用时触发Configure当控件大小改变时触发Deactivate当控件由可用转为不可用时触发Destroy当控件被销毁时触发Expose当控件从被遮挡状态中暴露出来时触发FocusIn当控件获得焦点时触发FocusOut当控件失去焦点时触发Map当控件由隐藏状态变为显示状态时触发Property当窗体的属性被删除或改变时触发Unmap当控件由显示变为隐藏状态时触发Visibility当控件变为可视状态时触发2.响应操作事件19④事件属性x,y:当前鼠标的位置,像素为单位;x_root,y_root:当前鼠标相对于上层框架的位置,像素为单位;char:字符码,只有键盘事件才有,string类型;keysym:键盘符号,只有键盘事件才有;keycode:键盘键的代码;num:鼠标的编号,左键1,中键2,右键3;width,height:控件新尺寸,只有Configure事件才有,像素为单位。2.响应操作事件20⑤事件响应tkinter中,事件的响应有两种绑定方式,一种是直接绑定处理函数,一种是间接绑定处理函数。(a)间接绑定
如按钮创建时,设置command参数为回调函数,称为间接绑定。如【例8-3】中按钮:Button(root,text='点我试试!‘,command=callback).place(relx=0.5,rely=0.5,anchor=CENTER)command参数为回调函数(callback)。这种方式简单,回调函数(callback)不需要任何参数。当然如果回调函数带参数,可以使用command=lambda:callback(argv……)形式。(b)直接绑定利用bind()函数,直接为控件指定事件的类型和回调函数,称为直接绑定。常用的绑定格式为:WidgetObject.bind(事件,函数)2.响应操作事件21#eg8_4.pyfromtkinterimport*root=Tk()root.geometry("200x200+60+60")defcallback(event):print("clickedat",event.x,event.y)frame=Frame(root,width=100,height=100,bg=‘red’)#绑定一个鼠标单击事件frame.bind("<Button-1>",callback)frame.pack()root.mainloop()【例8-4】演示一个Frame控件的bind()方法。绑定一个鼠标单击事件,当单击鼠标左键,每单击一次,控制台打印出当前单击的坐标x,y。2.响应操作事件22#eg8_5.pyfromtkinterimport*#定义方法,处理键盘事件defprintkey(event):print('你按下了:'+event.char)#定义方法处理回车键按下事件defprintEnter(event):#get()方法获得输入框的输入内容print("全部输入内容为:",entry.get())root=Tk()root.geometry("200x200+120+120")#实例化一个输入框entry=Entry(root,bg=‘blue’,width=20)#给输入框绑定按键监听事件,<Key>为监听任何按键entry.bind('<Key>',printkey)#绑定回车<Key-Return>键事件entry.bind('<Key-Return>',printEnter)entry.pack()root.mainloop()【例8-5】键盘事件演示示例。2.响应操作事件23【例8-6】请用tkinter创建下图所示菜单。文件菜单下包含子菜单项:新建、打开、保存、另存为;编辑菜单下包含子菜单:复制、剪切、粘贴;视图菜单下包含子菜单:文档视图、页面视图;关于菜单下包含子菜单:版权、联系我们。fromtkinterimport*#定义一个顶级窗口root=Tk()#在顶级窗口下定义一个顶级菜单menubar=Menu(root)#为每个菜单项添加子菜单项fmenu=Menu(menubar)foreachin['新建','打开','保存','另存为']:fmenu.add_command(label=each)emenu=Menu(menubar)foreachin['复制','粘贴','剪切']:emenu.add_command(label=each)vmenu=Menu(menubar)foreachin['文档视图','页面视图']:vmenu.add_command(label=each)amenu=Menu(menubar)foreachin['版权','联系我们']: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)#设置窗口对象的menu属性,将顶级菜单添加到窗口中root['menu’]=menubarroot.mainloop()2.响应操作事件turtle库0325Turtle库也是Python内置的模块,是一个直观有趣的图形绘制函数库。turtle是海龟的意思。程序设计中有时候需要绘制相应的图形来展示信息或者表达某种意义。设置turtle绘图区域turtle.screensize(canvwidth=None,canvheight=None,bg=None)canvwidth:画布的宽度,默认为800像素;canvheight:画布的高度,默认为800像素;bg:画布背景色。如:turtle.screensize(400,400,‘yellow’)表示设置画布为400x400,黄色底纹。设置turtle绘图窗口大小和位置turtle.setup(width,height,startx=None,starty=None)width:窗口的宽度,为整数时,表示像素;为小数时,表示窗口宽度与屏幕的比例;height:窗口的高度,为整数时,表示像素;为小数时,表示窗口高度与屏幕的比例;(startx,starty):这一坐标表示矩形窗口左上角顶点的位置,如果为空,则窗口位于屏幕中心。如:turtle.setup(0.5,0.5,100,100)表示绘图窗口宽和高为整个屏幕的一半,窗口左上角距屏幕左上角的坐标都为100。1.绘图窗口设置26
绘图窗口设置好后,画笔笔尖位于窗口的中心,即默认的坐标原点(0,0)。X轴正方向为向右,Y轴正方向为向上,X轴正方向为00(3600),逆时针旋转角度增大,顺时针旋转角度减小,即Y轴正方向为900(-2700),X轴负方向为1800(-1800),Y轴负方向为2700(-900)。
对于画笔可设置三个属性,分别是颜色、画线的宽度和画线的速度。turtle.pensize():设置画笔的宽度,单位为像素;turtle.pencolor():没有参数传入时,返回当前画笔颜色,传入参数设置画笔颜色时,可以是字符串如“green”,“red”,也可以是RGB3元组所对应的颜色编号,每一种颜色编号值为[0,255],如“#594839”。turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。2.画笔设置27控制海龟绘图有着许多的函数,这些函数分为运动函数、画笔控制函数、全局控制函数。函数说
明turtle.forward(distance)向当前画笔方向移动distance像素长度turtle.backward(distance)向当前画笔相反方向移动distance像素长度turtle.right(degree)顺时针移动degree°turtle.left(degree)逆时针移动degree°turtle.pendown()放下画笔turtle.goto(x,y)将画笔移动到坐标为x,y的位置turtle.penup()提起画笔turtle.circle(radius,extent=None)画一个以radius为半径,以extent为角度的圆弧,省略extent则画一个圆turtle.setx(x)从当前位置沿X轴移动到距离Y轴x像素turtle.sety(x)从当前位置沿Y轴移动到距离X轴x像素turtle.setheading(angle)设置画笔当前朝向为angle角度turtle.home()使画笔回到原点(0,0)turtle.dot(r)绘制一个指定直径和颜色的圆点运动函数3.绘图函数28画笔控制函数函数说
明turtle.fillcolor(colorstring)设置所绘图形的填充颜色turtle.color(color1,color2)同时设置pencolor=color2,fillcolor=color1turtle.filling()返回当前是否在填充状态turtle.begin_fill()准备开始填充图形turtle.end_fill()填充完成turtle.hideturtle()隐藏画笔的turtle形状turtle.showturtle()显示画笔的turtle形状3.绘图函数29全局控制函数命令说
明turtle.clear()清空turtle窗口,但是turtle的位置和状态不会改变turtle.reset()清空窗口,重置turtle状态为起始状态turtle.undo()撤销上一个turtle动作turtle.isvisible()返回当前turtle是否可见turtle.stamp()复制当前图形turtle.write(s[,font=("font-name",font_size,"font_type")])写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项turtle.mainloop()或turtle.done()启动事件循环,必须是turtle图形程序中的最后一个语句3.绘图函数30【例8-7】用turtle库绘制右图。分析:(1)从画笔的初始位置(正方形的左下角)开始,画边长为100的正方形。使用turtle.forward(distance)函数,画线的方向由turtle.setheading(angle)函数控制,每画完一个边,逆时针转900。(2)移动画笔到正方形下边的中点,画半径为50的圆。使用turtle.circle(radius,extent)函数,当省略extent参数时,表示沿逆时针方向画半径为radius的圆。4.应用示例31如何画一个外接圆4.应用示例importturtle#设置绘图窗口turtle.setup(400,400)#设置画笔turtle.pensize(3)turtle.color("red","yellow")#开始填充turtle.begin_fill()#画边长为100的正方形foriinrange(4):turtle.forward(100)#逆时针转90度turtle.setheading((i+1)*90)#画半径为50的内接圆turtle.setx(50)turtle.circle(50)#填充结束turtle.end_fill()turtle.mainloop()32【例8-8】请编程绘制右图。分析:(1)五角星的画法。五角星的每个角是360,画笔从起点开始,向前画200的直线,到达第一个转折点,右转(顺时针)1440,再向前画200的直线,不断重复右转1440和向前画200的直线,一共5次,即完成五角星的绘制。(2)文本的绘制。使用turtle.write(s[,font=("font-name",font_size,"font_type")]),s是要绘制的字符串,font参数部分是字符的字体、字号和字形,本例采用的是Arial字体,字号为30,字形是normal。4.应用示例33如果将顺时针转的角度改为1350,循环次数改为range(12),会是一个几角星?4.应用示例importturtleimporttime#设置画布,背景为灰色turtle.screensize(500,500,bg='gray')turtle.pensize(5)turtle.pencolor("yellow")turtle.fillcolor("red")#开始画图
turtle.begin_fill()foriinrange(5):#每边长200turtle.forward(200)#顺时针转144度turtle.right(144)turtle.end_fill()#延时2秒time.sleep(2)#抬起笔
turtle.penup()#移动到文本显示的位置turtle.goto(50,-180)turtle.color("yellow")#显示文本,字体为Arial,字号30,正常字形turtle.write("五角星",font=('Arial',30,'normal'))turtle.mainloop()34【附加示例】请绘制中华人民共和国国旗。知识点:国旗的形状、大小是有明确规定的。《中华人民共和国国家标准国旗(GB12982-2004)》明确给出了国旗的比例、颜色、每颗星的形状和位置等信息,我们绘制国旗要严格按标准进行绘制。绘制思路:国旗的形状可以分解为一个四边形(旗面)、1颗大星星和4颗小星星组成。绘制时我们将星星的边框和填充颜色设置为黄色,把四边形的底色设置为红色。4.应用示例354.应用示例364.应用示例importtimeimportturtleimportos#画国旗的旗面defdraw_rectangle(start_x,start_y,rec_x,rec_y):turtle.goto(start_x,start_y)turtle.color('red')turtle.fillcolor('red')turtle.begin_fill()foriinrange(2):turtle.forward(rec_x)turtle.left(90)turtle.forward(rec_y)turtle.left(90)turtle.end_fill()defdraw_star(center_x,center_y,radius):turtle.setpos(center_x,center_y)#获取5个顶点pt1=turtle.pos()turtle.circle(-radius,72)pt2=turtle.pos()turtle.circle(-radius,72)pt3=turtle.pos()turtle.circle(-radius,72)pt4=turtle.pos()turtle.circle(-radius,72)pt5=turtle.pos()#将5个顶点连线,画出五角星turtle.color('yellow','yellow')turtle.begin_fill()turtle.goto(pt3)turtle.goto(pt1)turtle.goto(pt4)turtle.goto(pt2)turtle.goto(pt5)turtle.end_fill()374.应用示例#starttheprojectturtle.speed(5)turtle.penup()#drawtherectanglestar_x=-320star_y=-260len_x=660len_y=440draw_rectangle(star_x,star_y,len_x,len_y)#drawthebigstarpice=660/30big_center_x=star_x+5*picebig_center_y=star_y+len_y-pice*5turtle.goto(big_center_x,big_center_y)turtle.left(90)turtle.forward(pice*3)turtle.right(90)draw_star(turtle.xcor(),turtle.ycor(),pice*3)#drawthesmallstarturtle.goto(star_x+10*pice,star_y+len_y-pice*2)turtle.left(turtle.towards(big_center_x,big_center_y)-turtle.heading())turtle.forward(pice)turtle.right(90)draw_star(turtle.xcor(),turtle.ycor(),pice)#drawthesecondstarturtle.goto(star_x+pice*12,star_y+len_y-pice*4)turtle.left(turtle.towards(big_center_x,big_center_y)-turtle.heading())turtle.forward(pice)turtle.right(90)draw_star(turtle.xcor(),turtle.ycor(),pice)#drawthethirdturtle.goto(star_x+pice*12,star_y+len_y-7*pice)turtle.left(turtle.towards(big_center_x,big_center_y)-turtle.heading())turtle.forward(pice)turtle.right(90)draw_star(turtle.xcor(),turtle.ycor(),pice)384.应用示例#drawthefinalturtle.goto(star_x+pice*10,star_y+len_y-9*pice)turtle.left(turtle.towards(big_center_x,big_center_y)-turtle.heading())turtle.forward(pice)turtle.right(90)draw_star(turtle.xcor(),turtle.ycor(),pice)
turtle.ht()time.sleep(3)os._exit(1)同学们有成就感吗?国旗是国家的象征,多少次危难的时刻,我们的同胞们看到国旗,那种激动的心情无以言表!任何时刻,中国始终坚持生命高于一切理念,时刻把人民的需要放在首要位置。为我们生活在幸福富强的中国而自豪!强盛的中国,因为有伟大的中国共产党的领导。请再绘制一幅党旗!394.应用示例还有什么具有创意的图形可以用turtle绘制?图形用户界面设计精选案例0441【例8-9】请设计一个如下图所示的登录界面。帐号和密码正确,则提示“OK!”,并且单击“是”按钮,退出登录;否则提示“帐号或密码错误!”,单击“是”按钮,则重新进行输入,直到单击“退出”按钮退出登录界面。精选案例42#eg8_9.pyimporttkinterastkimporttkinter.messageboxasmsg
#登录处理deflogin():ifname.get()=="admin"andpwd.get()=="123456":
msg.askyesno('登录提示','OK!')root.destroy()else:
msg.askyesno('登录提示','帐号或密码错误!')name.set("")pwd.set("")
root=tk.Tk()root.title("用户登录界面")#设置窗口大小为200x200,距离屏幕的左上角为40x40的位置开始root.geometry("200x200+40+40")#两个标签label_1=tk.Label(root,text="帐号:")label_1.grid(row=0,pady=20)label_2=tk.Label(root,text="密码:")label_2.grid(row=1)#两个输入框,以及两个变量,并关联输入框name=tk.StringVar()pwd=tk.StringVar()entry_1=tk.Entry(root,textvariable=name,width=18)entry_1.grid(row=0,column=1)entry_2=tk.Entry(root,textvariable=pwd,width=18,show='*')entry_2.grid(row=1,column=1)#两个按钮btn_1=tk.Button(root,text='登录',command=login)btn_1.grid(row=4,column=0,padx=10,pady=20,sticky=tk.W)btn_2=tk.Button(root,text='退出',command=root.destroy)btn_2.grid(row=4,column=1,pady=20,sticky=tk.E)
root.mainloop()此处用了tkinter.messagebox子模块精选案例43分析:(1)时间的获取,使用time模块localtime()方法,并将获取的时间通过asctime()函数转换成“SunMay2721:05:552018”,以便于显示。(2)绘制时钟,使用tkinter的画布控件Canvas来绘制。指针使用画布对象的create_line()方法绘制,文本使用画布对象的create_text()方法绘制,钟的圆盘使用画布对象的create_oval()方法绘制。颜色使用fill参数进行设置。(3)本例的难点是如何根据当前时间,计算指针的方向。将12点设置为0o(0π),11点59分59秒设置为360o(2π),时针的角度计算公式为rad时=2×π×(时+分÷60)÷12,分针的角度计算公式为rad分=2×π×(分+秒÷60)÷60,秒针的角度计算公式为rad秒=2×π×秒÷60。【例8-10】请设计一个如右图所示的电子时钟。精选
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年初中生物课堂教学反思与改进策略
- 皮牵引的护理
- 临猗《室内设计师》岗位冲刺押题卷
- 围手术期糖尿病患者血糖管理
- 广西壮族自治区百色市2026届高三下学期普通高中毕业班第二次模拟测试物理试卷(无答案)
- 血压测量与季节变化
- 广东清远市英德市2025-2026学年八年级下学期4月期中物理试题(含答案)
- 肠痈的护理与医疗团队合作
- Unit3 e et en ed说课稿2025年小学英语world 2oxford phonics(自然拼读)
- 医学26年老年心血管疾病合并骨质疏松查房课件
- 抽油机常见故障2概要课件
- HP-DL380-Gen10-服务器用户手册
- 药理学 治疗充血性心力衰竭的药物
- 煤化工概述-课件
- 变电工程110kV户内项目
- GB∕T 5336-2022 汽车车身修理技术条件
- 地铁通风空调施工组织设计
- 《外科学》第七节 直肠癌
- OceanStor 5000 6000存储技术手册
- 红虫养殖技术
- 园林绿化施工讲解(ppt)课件
评论
0/150
提交评论