前言:
最近偶尔有空抽出时间来学习python的GUI,又看到了尾大不掉的tkinter,然后CSDN官方也把它地位拉的很高。然后给出了这几点理由。
1、kinter有一个与生俱来的优势:无需安装就可以直接使用
2、相较于wx或Qt多如牛毛的控件和组件,Tk只用十几个控件就可以满足几乎所有的应用需求
其实确实简单,有基础的同学,大概花个1小时就又能融会贯通了。哈哈哈,话不多说,进入正题,来说说今天的计数器和倒计时器是怎么反转的。
一、案例计数器
还是使用我们的3点定位法,效果图+代码+解析来唠唠哈。
1、效果图
就是一个按钮加上一个会动的数字,你每次点击按钮就会加1,默认从0开始。真是简单粗暴~
2、代码
from tkinter import * class MyApp(Tk): """继承Tk,创建自己的桌面应用程序类""" def __init__(self): """构造函数""" super().__init__() self.title('按钮点击计数器') self.geometry('320x160') #self.iconbitmap('res/Tk.ico')#图标,如果不想用默认图标就改了它 self.counter = IntVar() # 创建一个整型变量对象 self.counter.set(0) # 置其初值为0 label = Label(self, textvariable=self.counter, font=("Arial Bold", 50)) # 将Label和整型变量对象关联 label.pack(side='left', expand='yes', fill='both', padx=5, pady=5) btn = Button(self, text='点我试试看', bg='#90F0F0') btn.pack(side='right', anchor='center', fill='y', padx=5, pady=5) btn.bind(sequence='<Button-1>', func=self.on_button) # 绑定事件和事件函数 def on_button(self, evt): """点击按钮事件的响应函数, evt是事件对象""" self.counter.set(self.counter.get() + 1) if __name__ == '__main__': app = MyApp() app.mainloop()
3、解析
二、调优后效果
1、效果图
可以自定义初始值,按你想去的楼层步步高升,哈哈哈
2、代码
from tkinter import * import time class MyApp(Tk): def __init__(self): super().__init__() self.title('这是一个计数器')#设置标题 self.geometry('380x160')#设置画布大小 self.iconbitmap('res\Tk.ico')#设置应用图标 self.count_num=IntVar()#创建一个Intvar变量 self.count_num.set(a)#初始化计数器为输入的倒计时数 lable=Label(self,textvariable=self.count_num,font=('Arial Bold',50)) lable.pack(side='left',padx=5,pady=5,fill='both',expand='yes') bth=Button(self,text='你点点看',bg='#1AA7Ec',fg='white') bth.pack(side='right',pady=5,ipadx=5,fill='y',anchor='center') bth.bind(sequence='<Button-1>',func=self.button_on) def button_on(self,evt): self.count_num.set(self.count_num.get()+1) #time.sleep(2) #self.destroy() if __name__=='__main__': a = int(input("请输入计数器的初始值:"))#定义全局变量a,用于保存计数 app=MyApp() app.mainloop()
3、解析
变装为倒计时器
1、效果
2、代码
from tkinter import * import time class MyApp(Tk): def __init__(self): super().__init__() self.title('这是一个倒计时器')#设置标题 self.geometry('480x160')#设置画布大小 self.iconbitmap('res\Tk.ico')#设置应用图标 self.count_num=IntVar()#创建一个Intvar变量 self.count_num.set(a)#初始化计数器为输入的倒计时数 lable=Label(self,textvariable=self.count_num,font=('Arial Bold',50)) lable.pack(side='left',padx=5,pady=5,fill='both',expand='yes') bth=Button(self,text='你点点看',bg='#1AA7Ec',fg='white') bth.pack(side='right',pady=5,ipadx=5,fill='y',anchor='center') bth.bind(sequence='<Button-1>',func=self.button_on)#Button-1为鼠标左键单击事件 def button_on(self,evt): global a if a>0: self.count_num.set(self.count_num.get()-1) print(a) a=a-1 else: self.count_num.set('倒计时结束') print('倒计时结束!!') #self.sleep() #self.destroy() if __name__=='__main__': a = int(input("请输入倒计时的数字:"))#定义全局变量a,用于保存计时数 app=MyApp() app.mainloop()
3、解析
上面计数器都是每次加1,我想当然也能每次减1了,比如我们比赛,放PPT开场的时候都会用到倒计时器,计数器好像可以用来较崽崽,学习1-100,学会1,然后点一下教他学2。修改后的关键代码在button_on函数中。记得在引用全局变量a的时候记得,加上global。
四、总结
好的,今天分享就到这里,我们在学习的时候,可以举一反三,这样我们就会觉得学习突然有趣了起来,希望日进尺步,步步高。祝好,有不懂的欢迎留言讨论。或者直接私信我~