1、复习回顾复习回顾任务九任务九 GUIGUI编程编程新课导入到目前为止,我们所编写的Python代码都是处于一个文字交互界面的状态。但在实际应用中,很多用户都是非专业的,他们希望所提供的软件能有一个友好的界面,这就用到GUI编程了。GUI(Graphical User Interface)又称图形用户界面,是指采用图形方式显示的用户操作界面。Python的GUI工具包有很多,其中最常用的有tkinter,wxPython,PyGTK,PyQt等,本章将介绍如何使用tkinter来编写GUI程序。知识能力目标理解使用tkinter进行GUI编程的主要步骤熟悉tkinter的常用控件掌握事件绑定的方
2、法掌握布局管理器的使用方法了解标准对话框的使用方法连接数据库11.1 11.1 tkintertkinter和和PythonPython编程编程11.2 tkinter11.2 tkinter常用常用控件控件11.3 11.3 事件事件绑定绑定11.4 11.4 布局布局管理器管理器11.5 11.5 标准标准对话框对话框11.6 11.6 典型案例典型案例计算器计算器11.1 tkinter11.1 tkinter和和PythonPython编程编程11.1.2 tkinter的使用的使用11.1.1 tkinter简介简介u tkinter是Python的标准GUI库。u tkinter的
3、优点是简单易用,与Python结合度好。u tkinter在Python 3.x下默认集成,不需要额外安装。因此,想要使用tkinter进行GUI编程,可直接使用import语句导入tkinter模块。import tkinter创建一个GUI应用程序需要以下5个主要步骤。导入tkinter模块(import tkinter)创建一个顶层窗口对象(调用Tk()类),用于容纳整个GUI应用在顶层窗口对象上构建所有的GUI控件通过底层应用代码将这些GUI控件连接起来进入主事件循环(调用mainloop()函数)在GUI编程中,顶层窗口对象包含组成GUI应用程序的所有小窗口对象,它们可能是文字标签、
4、按钮、列表框等,这些独立的GUI组件称为控件。控控 件件描描 述述Button按钮控件,在程序中显示按钮Canvas画布控件,显示图形元素,如线条、椭圆、矩形等Checkbutton多选框控件,用于在程序中提供多项选择框Entry输入控件,用于显示简单的文本内容Frame框架控件,在屏幕上显示一个矩形区域,多用作容器Label标签控件,可以显示文本和图像LabelFrameFrame的进化版,标签和框架的组合Listbox列表框控件,用来显示一个字符串列表给用户Menu菜单控件,显示菜单栏、下拉菜单和弹出菜单Menubutton菜单按钮控件,用于显示菜单项Message消息控件,用来显示多行文
5、本,与Label类似PanedWindow窗口布局管理插件,可以包含一个或多个子控件Radiobutton单选按钮控件,显示一个单选的按钮状态Scale线性滑块控件,根据已设定的起始值和终止值,给出当前设定的精确值Scrollbar滚动条控件,当内容超过可视化区域时使用,如列表框SpinboxEntry和Button的组合,允许对值进行调整Text文本控件,用于显示多行文本Toplevel容器控件,用来提供一个单独的对话框,和Frame类似例:第一个tkinter实例创建一个窗口用于输出“Hello world“。import tkinter#导入tkinter模块top=tkinter.Tk
6、()#创建一个顶层窗口对象label=tkinter.Label(top,text=Hello World,fg=red)#添加一个Label控件,用于显示文本label.pack()#调用Label控件的pack()方法top.mainloop()#进入主事件循环程序运行效果11.2 tkinter11.2 tkinter常用控件常用控件窗口也称为框架(Frame),是屏幕上的一块矩形区域,多用来作为容器布局窗体。窗口中可包含标签、菜单、按钮等其他控件,其运行之后可移动和缩放。属属 性性描描 述述title设置窗口标题geometry设置窗口大小resizable设置窗口是否可以变化长和宽例
7、:创建一个300200的窗口,其标题为“金企鹅”,运行后该窗口宽不可变,高可变。import tkinter#导入tkinter库window=tkinter.Tk()#创建tkinter对象window.title(金企鹅)#设置标题window.geometry(300 x200)#设置窗口大小,注意是字母xwindow.resizable(width=False,height=True)#宽不可变,高可变,默认为Truewindow.mainloop()#进入主事件循环程序运行效果Label控件是用于在界面上输出描述信息的标签,可以显示文本和图像。属属 性性描描 述述text要显示的文本
8、bg背景颜色fg前景色bd外围3D边界的宽度font字体width控件宽度height控件高度relief边框样式例:创建一个200100的窗口,其标题为“金企鹅”,在窗口中创建一个标签,用于显示“金企鹅联合出版中心”,并设置其字体、颜色、宽度和高度。import tkinter#导入tkinter库window=tkinter.Tk()#创建tkinter对象window.title(金企鹅)#设置标题window.geometry(200 x100)#设置窗口大小,注意是字母x#创建标签,text设置文本,bg设置背景色,fg设置前景色,font设置字体,width设置宽,height设置
9、高label1=tkinter.Label(window,text=金企鹅联合出版中心,bg=white,fg=blue,font=(宋体),width=20,height=3)label1.pack()#显示Labelwindow.mainloop()#进入主事件循环程序运行效果通过Button控件可以方便地与用户进行交互。Button控件有一个command属性,用于指定一个函数或方法,当用户单击按钮时,tkinter就会自动调用该函数或方法。例:编写程序实现通过按下按钮来执行指定操作(改变标签的内容)。import tkinter as tk#导入tkinter模块重命名为tk#定义函数
10、,用于实现改变标签的内容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函
11、数btn=tk.Button(top,text=Hello,command=btnHelloClicked)btn.pack()#显示按钮top.mainloop()#进入主事件循环程序运行效果Entry控件就是输入框,用来输入单行内容,可以方便地向程序传递用户参数。获取输入框的内容可以使用Entry控件的get()方法。例:编写摄氏度转华氏度的小程序,要求从输入框输入摄氏度的值,单击计算按钮后得到华氏度的值。计算公式:F=1.8C+32。import tkinter as tk#导入并重命名tkinter模块#定义函数用于读取Entry控件的内容并将计算结果进行输出def btnHelloC
12、licked():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
13、=tk.Button(top,text=计算,command=btnHelloClicked)btnCal.pack()#显示按钮top.mainloop()#进入主事件循环程序运行效果Radiobutton和Checkbutton控件分别用于实现选项的单选和复选功能。属属 性性描描 述述variable单选框索引变量,通过变量的值确定哪个单选框被选中,一组单选框使用同一个索引变量value单选框选中时变量的值command单选框选中时执行的命令(函数)属属 性性描描 述述variable复选框索引变量,通过变量的值确定哪些复选框被选中;每个复选框使用不同的变量,使复选框之间相互独立onval
14、ue复选框选中(有效)时变量的值offvalue复选框未选中(无效)时变量的值command复选框选中时执行的命令(函数)例:编写程序,实现通过单选框和复选框设置文字样式的功能。import tkinter as tk#导入tkinter模块重命名为tk#定义函数用于修改标签中文字的颜色def colorChecked():labelHello.config(fg=color.get()#定义函数用于修改标签中文字的字体def typeChecked():textType=typeBlod.get()+typeItalic.get()#两个复选框的值相加 if textType=1:#单选ty
15、peBlod复选框 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)top=tk.Tk()#创建tkinter对象top.title(Radio&Check Test)#设置窗口标题#创建标签
16、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).pa
17、ck()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
18、=2,offvalue=0,command=typeChecked).pack()top.mainloop()#进入主事件循环程序运行效果 提示可以使用tkinter.StringVar()创建与特定控件关联的字符串变量,使用tkinter.IntVar()创建与特定控件关联的整型变量。tkinter提供了Menu控件,用于实现顶级菜单、下拉菜单和弹出菜单。函数名称函数名称说说 明明menu.add_cascade()添加子选项menu.add_command()添加命令(label参数为显示内容)menu.add_separator()添加分隔线menu.add_checkbutton()添
19、加确认按钮1 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=显示,co
20、mmand=callback)menubar.add_command(label=退出,command=window.quit)window.config(menu=menubar)#显示菜单window.mainloop()#进入主事件循环程序运行效果2 2下拉菜单下拉菜单创建一个下拉菜单,方法同创建顶级菜单类似,最主要的区别是下拉菜单需要添加到主菜单上。例:创建下拉菜单实例。import tkinterwindow=tkinter.Tk()window.title(标题)window.geometry(200 x100)#创建一个顶级菜单实例menubar=tkinter.Menu(win
21、dow)#为每个子菜单实例添加菜单项#创建文件菜单项,并添加子菜单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=
22、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=
23、menubar)#显示菜单window.mainloop()#进入主事件循环3 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)程序
24、运行效果#弹出菜单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 事件绑定事件绑定11.3.2 事件对象事件对象11.3.1 事件序列事件序列u 一个tkinter应用程序的大部分时间花费在事件循环上(通过mainloop()方法进入)。u 事件可以有多种来源,
25、包括用户触发的鼠标、键盘操作或是系统事件。u tkinter提供了强大的事件处理机制,对于每个控件来说,可以通过bind()方法将函数或方法绑定到具体的事件上,其语法格式如下:控件对象名.bind(event,handler)event是tkinter已经定义好的事件(通过事件序列机制定义)。handler是一个处理函数或方法。例:捕获鼠标点击事件实例。from tkinter import*#导入tkinter库中所有内容root=Tk()#创建tkinter对象#定义函数,用于输出鼠标单击的坐标def callback(event):print(clicked at,event.x,eve
26、nt.y)frame=Frame(root,width=200,height=100)#创建窗体frame.bind(,callback)#绑定鼠标左键frame.pack()#显示窗体root.mainloop()#进入主事件循环程序运行效果tkinter使用一种称为事件序列的机制来允许用户定义事件,事件序列以字符串的形式表示,其语法格式如下:说明:u(1)事件序列必须用尖括号括起来;u(2)type字段是最重要的,它通常用于描述事件类型,如鼠标单击、键盘输入等;u(3)modifier字段是可选的,它通常用于描述组合键,如Ctrl、Shift等;u(4)detail字段也是可选的,它通常用
27、于描述具体的按键,如Button-1表示单击鼠标左键。关关 键键 字字含含 义义Button鼠标单击事件,detail部分指定具体哪个按键:鼠标左键,鼠标中键,鼠标右键。鼠标的位置x和y会被event对象传给handlerButtonRelease鼠标释放事件,在大多数情况下,比Button要更好用,因为如果当用户不小心按下鼠标,用户可以将鼠标移出控件再释放鼠标,从而避免不小心触发事件Configure控件大小改变事件,新的控件大小会存储在event对象中的width和height属性中传递Enter鼠标移入控件事件FocusIn获得焦点事件FocusOut失去焦点事件Leave鼠标移出控件事
28、件KeyPress键盘按下事件,detail可指定具体的按键,例如,表示当大写字母H被按下时触发该事件,KeyPress也可以简写成KeyMotion鼠标移动事件,鼠标在控件内移动的整个过程均触发该事件type字段常用的关键字及含义:modifier字段常用的关键字及含义关关 键键 字字含含 义义Alt当按下Alt键时Any表示任何类型的按键被按下时,例如,表示当用户按下任意键时触发事件Control当按下Ctrl键时Double当后续事件被连续触发两次时,例如,表示当用户双击鼠标左键时触发事件Lock当打开大写字母锁定键时Shift当按下Shift键时Triple跟Double类似,当后续事
29、件被连续触发三次时当tkinter调用预先定义的函数时,会将事件对象(作为参数)传递给函数,事件对象的属性及含义如下表所示。属属 性性含含 义义widget产生事件的控件x,y当前鼠标的位置(相对于窗口左上角,单位为像素)x_root,y_root当前鼠标的位置(相对于屏幕左上角,单位为像素)char字符代码(仅限键盘事件),作为字符串keysym关键符号(仅限键盘事件)keycode关键代码(仅限键盘事件)num按钮数字(仅限鼠标按钮事件)width,height控件的新尺寸(Configure事件专属)type事件类型例:事件绑定实例。import tkinter#导入tkinter库wi
30、ndow=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=st
31、r(event.y_root)window.geometry(200 x100+x+y)window.bind(,func3)window.mainloop()11.4 11.4 布局管理器布局管理器11.4.2 grid布局布局11.4.1 pack布局布局11.4.3 place布局布局pack布局是按添加的顺序排列控件,即向容器中添加控件,第一个添加的控件在最上方,然后依次向下排列。例:pack布局实例。from tkinter import*#导入tkinter库中所有内容root=Tk()#创建tkinter对象#创建三个标签Label(root,text=pack1,bg=red)
32、.pack()Label(root,text=pack2,bg=blue).pack()Label(root,text=pack3,bg=green).pack()root.mainloop()#进入主事件循环程序运行效果pack布局的常用属性属属 性性 名名含含 义义取值说明取值说明fill设置控件是否向水平或垂直方向填充X(水平方向填充)、Y(垂直方向填充)、BOTH(水平和垂直)、NONE(不填充)expand设置控件是否展开,当值为YES时,side选项无效,控件显示在父容器中心位置;若fill选项为BOTH,则填充父控件的剩余空间;默认为不展开expand=YESexpand=NOs
33、ide设置控件的对齐方式LEFT(左)、TOP(上)、RIGHT(右)、BOTTOM(下)ipadxipady设置x方向(或者y方向)内部间隙(与子控件之间的间隔)可设置数值(非负整数,单位为像素),默认是0padxpady设置x方向(或者y方向)外部间隙(与之并列的控件之间的间隔)可设置数值(非负整数,单位为像素),默认是0anchor锚选项,当可用空间大于所需求的尺寸时,决定控件被放置于容器的位置N,E,S,W,NW,NE,SW,SE,CENTER(默认值为CENTER),表示八个方向以及中心 提示pack布局适用于少量控件的排列,当界面复杂度增加时,要实现某种布局效果,需要分层来实现。例
34、:分层实现较复杂布局。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)程序运行效果#使
35、用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()grid布局又称为网格布局,是tkinter布局管理器中最灵活多变的布局方法。由于大多数程序界面都是矩形的,我们可以将它划分为由行和列组成的网格,然后根据行号和列号,
36、将控件放置于网格之中。属属 性性 名名含含 义义取值说明取值说明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的该属性用法相同例:grid布局实例。from tkinter import*#导入tkinter库中所有内容root
37、=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()#进入主事件循环程序运行效果place布局使用控件坐标来放置控件的位置。属属 性性 名名含含 义义取值说明取值说明
38、x,y控件左上角的x,y坐标(绝对位置)整数,默认值为0,单位像素relx,rely控件相对于父容器的x,y坐标(相对位置)01之间浮点数,0.0表示左边缘(或上边缘),1.0表示右边缘(或下边缘)width,height控件的宽度和高度非负整数,单位像素relwidth,relheight控件相对于父容器的宽度和高度与relx和rely取值相似anchor锚选项同pack布局bordermode如果设置为INSIDE,不包括边框;如果是OUTSIDE,包括边框INSIDE,OUTSIDE(默认值INSIDE)例:place布局实例。from tkinter import*#导入tkinter
39、库中所有内容root=Tk()#创建tkinter对象root.geometry(200 x100)#设置窗口大小la=Label(root,text=hello Place a)#创建标签lala.place(x=0,y=0,anchor=NW)#使用绝对坐标将Label放置到(0,0)位置上lb=Label(root,text=hello Place b)#创建标签lblb.place(relx=0.5,rely=0.5,anchor=CENTER)#使用相对坐标将标签放置到窗口中央root.mainloop()#进入主事件循环程序运行效果 提示(1)在同一个主窗口中不要混用这3种布局管理
40、器。(2)不推荐使用place布局,因为在不同分辨率下,界面往往有较大差异。11.5 11.5 标准对话框标准对话框11.5.2 filedialog模块模块11.5.1 messagebox模块模块11.5.3 colorchooser模块模块messagebox模块用于显示一个模式对话框,其中包含一个系统图标、一组按钮和一个简短的特定于应用程序的消息,如状态或错误信息。messagebox模块askokcancel()askquestion()askretrycancel()askyesno()showerror()showwarning()例:messagebox模块实例。import
41、tkinter as tk#导入tkinter模块并命名为tkfrom tkinter import messagebox as msgbox#导入tkinter.messagebox模块并命名#定义各个函数用于相应按钮事件def btn1_clicked():msgbox.showinfo(Info,showinfo测试!)def btn2_clicked():msgbox.showwarning(Warning,showwarning测试!)def btn3_clicked():msgbox.showerror(Error,showerror测试!)def btn4_clicked():m
42、sgbox.askquestion(Question,askquestion测试!)def btn5_clicked():msgbox.askokcancel(OkCancel,askokcancel测试!)def btn6_clicked():msgbox.askyesno(YesNo,askyesno测试!)def btn7_clicked():msgbox.askretrycancel(Retry,askretrycancel测试!)top=tk.Tk()#创建tkinter对象top.title(MsgBox Test)#设置标题#创建按钮用于触发各个对话框函数btn1=tk.Butt
43、on(top,text=showinfo,command=btn1_clicked)btn1.pack(fill=tk.X)btn2=tk.Button(top,text=showwarning,command=btn2_clicked)btn2.pack(fill=tk.X)btn3=tk.Button(top,text=showerror,command=btn3_clicked)btn3.pack(fill=tk.X)btn4=tk.Button(top,text=askquestion,command=btn4_clicked)btn4.pack(fill=tk.X)btn5=tk.B
44、utton(top,text=askokcancel,command=btn5_clicked)btn5.pack(fill=tk.X)btn6=tk.Button(top,text=askyesno,command=btn6_clicked)btn6.pack(fill=tk.X)btn7=tk.Button(top,text=askretrycancel,command=btn7_clicked)btn7.pack(fill=tk.X)top.mainloop()#进入主事件循环程序运行效果filedialog模块用于打开文件对话框,该模块提供了2个函数:u askopenfilename
45、()函数用于打开“打开”对话框u asksaveasfilename()函数用于打开“另存为”对话框例:filedialog模块实例。import tkinter.filedialog#导入tkinter.filedialog模块from tkinter import*#导入tkinter模块root=Tk()#创建tkinter对象#定义函数用于响应按钮事件def callback():fileName=filedialog.askopenfilename()#打开“打开”对话框 print(fileName)#输出文件名#创建按钮用于触发事件Button(root,text=打开文件,co
46、mmand=callback).pack()root.mainloop()#进入主事件循环程序运行效果colorchooser模块用于打开颜色选择对话框,由askcolor()函数实现。例:colorchooser模块实例。import tkinter.colorchooser#导入tkinter.colorchooser模块from tkinter import*#导入tkinter模块root=Tk()#创建tkinter对象#定义函数用于相应按钮事件def callback():fileName=colorchooser.askcolor()#打开颜色选择对话框 print(fileNa
47、me)#输出颜色信息#创建按钮Button(root,text=选择颜色,command=callback).pack()root.mainloop()#进入主事件循环程序运行效果11.6 11.6 典型典型案例案例例:编写计算器应用程序,实现简单的算术运算功能。程序运行效果根据分析,计算器应用程序可分为两大功能模块:u(1)创建计算器界面:计算器界面由多个按钮(如数字按钮、符号按钮等)和一个标签(用于输出按钮信息和计算结果)构成,可利用tkinter提供的Button控件和Label控件实现,再利用布局管理器(grid布局)将各个控件排列显示,其中创建Button控件时利用其command属性调用相应的功能函数。u(2)创建按钮键值类:该类中定义一个构造方法用于接收按钮值,然后定义多个方法用于实现具体的按键功能(供Button控件调用),包括实现添加数值功能的方法,实现删除功能的方法,实现清空功能的方法,实现切换正负号功能的方法,实现添加小数点功能的方法,以及实现计算功能的方法。感谢您的观看感谢您的观看
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。