12-6 tkinter的综合应用案例Python程序设计基础教程(微课版第2版)_第1页
12-6 tkinter的综合应用案例Python程序设计基础教程(微课版第2版)_第2页
12-6 tkinter的综合应用案例Python程序设计基础教程(微课版第2版)_第3页
12-6 tkinter的综合应用案例Python程序设计基础教程(微课版第2版)_第4页
12-6 tkinter的综合应用案例Python程序设计基础教程(微课版第2版)_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

掌握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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论