版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
掌握tkinter的基本使用tkinter综合应用案例CHAPTER12tkinter综合应用案例前面几节的实例代码中,由于涉及控件较少,我们都是在全局空间内操纵各个控件对象。在实际项目中,当涉及较多控件以及复杂的业务逻辑时,为了使得代码层次结构更清晰,一般都需要采用自定义类来进行组织。本节通过一个简单的计算器程序帮助大家进一步掌握tkinter的基本使用。该程序可以实现不带括号的四则运算,既可以用鼠标点击相应按钮完成计算,也可以直接使用键盘输入tkinter综合应用案例
自定义类Calculator通过继承Tk类构建了自定义类Calculator
采用了
7*4的Grid布局在Calculator构造函数中完成控件设计与布局tkinter综合应用案例0-9数字按键四折运算按键小数点退格键清空键回车键123456后5行对应18个按钮控件tkinter综合应用案例在事件处理程序设计上,数字键、四折运算按键以及小数点键都采用一个匿名函数来调用一个统一的方法;退格键、清空键以及回车键的事件处理程序分别对应一个类方法。为了用户使用方便,该程序还在应用程序级别绑定了各个按钮对应的键盘事件tkinter综合应用案例01#-*-coding:utf-8-*-02#calculator.py03importtkinterastk04classCalculator(tk.Tk):05def__init__(self):06super().__init__()#调用父类的构造器07self.title("Calculator")08self.iconbitmap("python.ico")【例】下面的calculator.py给出了程序代码具体如下tkinter综合应用案例09#7*4布局,第一行和第二行是两个标签控件,后5行是18个按钮控件10opts={'padx':2,'pady':2,'ipadx':3,'ipady':2,'sticky':tk.NSEW}11buttonwidth=712self.exp=tk.StringVar()#输入表达式标签的控制变量13self.res=tk.StringVar(self,"0")#计算结果标签的控制变量14exp_label=tk.Label(self,anchor=tk.E,textvariable=self.exp)#输入表达式标签控件15exp_label.grid(opts,row=0,column=0,columnspan=4)res_label=tk.Label(self,anchor=tk.E,textvariable=self.res)#计算结果(开始计算前用于显示待计算表达式)标签控件17res_label.grid(opts,row=1,column=0,columnspan=4)18tk.Button(self,text="C",width=buttonwidth,command=self.clear).grid(opts,row=2,column=0)19tk.Button(self,text="/",width=buttonwidth,command=lambda:self.show("/")).grid(opts,row=2,column=1)tkinter综合应用案例20tk.Button(self,text="*",width=buttonwidth,command=lambda:self.show("*")).grid(opts,row=2,column=2)21
tk.Button(self,text="BS",width=buttonwidth,command=self.backspace).grid(opts,row=2,column=3)22
tk.Button(self,text="-",width=buttonwidth,command=lambda:self.show('-')).grid(opts,row=3,column=3)23
tk.Button(self,text="+",width=buttonwidth,command=lambda:self.show('+')).grid(opts,row=4,column=3)24
tk.Button(self,text="Enter",anchor=tk.S,width=buttonwidth,command=self.calculate).grid(opts,row=5,column=3,rowspan=2)25tk.Button(self,text=".",width=buttonwidth,command=lambda:self.show('.')).grid(opts,row=6,column=2)26tk.Button(self,text="0",width=buttonwidth,command=lambda:self.show('0')).grid(opts,row=6,column=0,columnspan=2)27tk.Button(self,text="7",width=buttonwidth,command=lambda:self.show("7")).grid(opts,row=3,column=0)tkinter综合应用案例28tk.Button(self,text="8",width=buttonwidth,command=lambda:self.show("8")).grid(opts,row=3,column=1)29tk.Button(self,text="9",width=buttonwidth,command=lambda:self.show("9")).grid(opts,row=3,column=2)30tk.Button(self,text="4",width=buttonwidth,command=lambda:self.show("4")).grid(opts,row=4,column=0)31tk.Button(self,text="5",width=buttonwidth,command=lambda:self.show("5")).grid(opts,row=4,column=1)32tk.Button(self,text="6",width=buttonwidth,command=lambda:self.show("6")).grid(opts,row=4,column=2)33tk.Button(self,text="1",width=buttonwidth,command=lambda:self.show("1")).grid(opts,row=5,column=0)34tk.Button(self,text="2",width=buttonwidth,command=lambda:self.show("2")).grid(opts,row=5,column=1)35tk.Button(self,text="3",width=buttonwidth,command=lambda:self.show("3")).grid(opts,row=5,column=2)36#允许除第一二行以外的各行各列等比例缩放37foriinrange(2,7):38
self.rowconfigure(i,weight=1)tkinter综合应用案例39foriinrange(0,4):40self.columnconfigure(i,weight=1)41#添加应用程序级别键盘输入事件42self.bind_all("<Return>",lambdae:self.calculate())#回车键43self.bind_all("<Key-BackSpace>",lambdae:self.backspace())#退格键44self.bind_all("<Key-Delete>",lambdae:self.clear())#删除键45self.bind_all("<Key-plus>",lambdae:self.show('+'))46self.bind_all("<Key-minus>",lambdae:self.show('-'))47self.bind_all("<Key-asterisk>",lambdae:self.show('*'))48
self.bind_all("<Key-slash>",lambdae:self.show('/'))49self.bind_all("<Key>",self.check_key)#其它数字及操作符tkinter综合应用案例5051defcheck_key(self,event):#检查数字键及操作符键事件52if(event.char>='0')and(event.char<="9"):53
self.show(event.char)5455defcalculate(self):#调用eval函数计算表达式结果56res=eval(self.res.get())#计算当前的表达式57self.exp.set(self.res.get())58self.res.set(str(res))59tkinter综合应用案例60defclear(self):#清除当前的表达式61self.exp.set("")62self.res.set("0")6364defshow(self,key):#在开始计算前将当前的输入添加到待计算表达式65content=self.res.get()66ifcontent=="0":67 content=""tkinter综合
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 航空发动机结构与系统课件 233燃烧室的构造
- 2026年市场营销经理的面试技巧
- 2026年葡萄酒品鉴师资格考试葡萄酒品鉴结果分析与反馈题
- 2026年社区退休人员征婚交友诈骗特征识别测试
- 2026年政务服务大厅环境卫生管理知识测试题
- 2026年文艺创作生产导向管理知识问答
- 2026年基础知识全攻略地理科学要点
- 2026年行政强制法实施规范宣传测试题
- 2026年青岛市三力测试题库精
- 2026年黑龙江单招中西面点工艺裱花蛋糕制作模拟卷含答案
- 《 尿的形成和排出 第2课时》示范公开课教学课件【生物北师大七年级下册】
- 2023年桂林旅游学院辅导员招聘考试真题
- (新版)国民经济行业分类代码表(八大行业)
- 数学选修3-1数学史选讲第1课时公开课一等奖市优质课赛课获奖课件
- 西方芭蕾史纲
- 泌尿、男生殖系统感染《外科学》-课件
- 有机化学课件第5章芳香烃
- GA 420-2021警用防暴服
- GB/Z 18039.7-2011电磁兼容环境公用供电系统中的电压暂降、短时中断及其测量统计结果
- GB/T 28202-2011家具工业术语
- 伤痕文学反思文学改革文学课件
评论
0/150
提交评论