Python Tkinter界面应用开发-05 拉出
来源:互联网 发布:新疆矩阵农产品交易 编辑:程序博客网 时间:2024/04/30 12:41
视频教程观看地址:http://study.163.com/course/courseMain.htm?courseId=1003853008为了能够实现计时,我们要创建一个新的方法,命名为update.为了演示这个函数的调用情况,我们在这里打印出一个Update字符串。 def update(self): print('updated')接着,我们希望我们的Update函数每秒被调用一次,这应该如何实现呢。不知道大家还记得我们的全局应用程序变量master,我们可以通过它,来使Update函数每秒调用一次。它有一个函数after,它的第一个参数是毫秒数。所以1000毫秒是一秒。然后我们希望每隔一秒调用一次它,所以第二个参数是self.update: def update(self):print('updated') self.master.after(1000, self.update)现在,我们来到init函数中调用它:在所有的控件都创建之后,我们调用self.update: self.build_gird()self.build_banner()self.build_buttons()self.build_timer() self.update()好的,所以现在运行一下。你看,每隔一秒窗口就打印一次update:实际上,在这个方法中,我还需要处理计时器的递减以及计时器的重置。所以,首先,让我们计算计时器剩余的时间。我们会说: def update(self): time_left = self.time_left.get()然后,如果计时器在运行并且还有剩余的时间: if self.running and time_left: self.master.after(1000, self.update)那么,我们就要让时间减一秒。所以, if self.running and time_left: self.time_left.set(time_left-1)否则,我们就暂停计时器。 if self.running and time_left:self.time_left.set(time_left-1) else: self.stop_timer()这样。它就会停止计时,并且重置按钮。那么接下来,我们来对计时器的标签进行一些操作,实际上,我们现在已经在我们的build_timer函数中绘制了计时器的标签。 def build_timer(self):timer = tkinter.Label(self.mainframe,text = self.timer_text.get(),font = ('微软雅黑', 36))在构造函数中,我们也创建了一个用于显示时间的的字符串变量。 self.timer_ = tkinter.StringVar()所以现在,我们想告诉这个变量,当这个变量被写入数据时,或者说,被赋值时,我们就调用build_timer函数,所以w意味着‘写入’。 self.timer_text = tkinter.StringVar() self.timer_text.trace('w', self.build_timer)所以现在build_timer将被自己调用。但它被自己调用的时候,我们希望它发送更多的信息。我们不得不使用args来记录这些信息,我们不会用到这些信息,但如果不补充这个参数,Python的语法是不允许的: def build_timer(self, *args):timer = tkinter.Label(接下来,让我们来更新这个标签。首先,我们需要创建一个函数,来计算剩下的分钟数和秒数。它需要一个参数:秒数。我想返回的分钟,所以,这里返回的应该是秒除以60.还有秒模60. def minutes_seconds(self, seconds):return int(seconds/60), int(seconds%60) def update(self):所以在Update函数中,让我们转换下秒数. def update(self):time_left = self.time_left.get()if self.running and time_left:minutes, seconds = self.minutes_seconds(time_left)然后我们要做就是对文本变量time_text写入数据。self.timer_text.set()。这里我们还需要为定时器文本设置一个格式。通常我们会这样做,因为我们想要分和秒,所以需要用零来填充两个数字。 minutes, seconds = self.minutes_seconds(time_left) self.timer_text.set( '{:02}:{:0<2}'.format(minutes, seconds) )然后在else语句之后.还需要在设置一次文本,所以复制这里,然后粘贴到else语句之后,然后修改为DEFAULT_GAP: else: minutes, seconds = self.minutes_seconds(DEFAULT_GAP) self.timer_text.set( '{:0<2}:{:0<2}'.format(minutes, seconds) )self.stop_timer()我们运行试试效果:你看,当我们开始时,计时递减,点击stop按钮,重置计时器,没问题。接着。我们再来测试,当25分钟过后,是否正确,但这里,我不想等待25分钟。所以让我们修改默认的计时,所以,来到文件的顶部,修改值为5:DEFAULT_GAP = 25 * 60DEFAULT_GAP = 5再次运行。当计时结束时,重置。Stop按钮被禁用。更多精彩内容尽在视频中!本文固定链接:http://www.oxox.work/web/tkinter/pull/ | 虚幻大学
查看原文:http://www.oxox.work/web/tkinter/pull/
阅读全文
0 0
- Python Tkinter界面应用开发-05 拉出
- Python Tkinter界面应用开发-01 简介
- Python Tkinter界面应用开发-06 结束
- Python Tkinter界面应用开发-03 界面的搭建
- Python Tkinter界面应用开发-04 开始和结束
- Python Tkinter界面应用开发-02 开始番茄钟应用开发
- 【python tkinter】登陆界面
- Python Tkinter 应用窗口
- Python: Tkinter实现GUI界面
- Python Tkinter 简单登录界面
- Python Tkinter 简单登录界面
- python开发之tkinter
- python应用系列教程——python的GUI界面编程Tkinter全解
- python tkinter应用:文本编辑器
- python开发之Tkinter可视化
- python利用tkinter设计界面进阶:ttk
- Android开发进阶系列(四) 左移拉出Menu菜单界面布局
- python中Tkinter模块的简单应用
- 论文排版中的问题及对策
- 常用的加密方式学习笔记
- java垃圾回收策略及对象管理机制
- 欢迎使用CSDN-markdown编辑器
- ATL--创建简单的ATL之dll工程,添加类和类的接口并在MFC中调用
- Python Tkinter界面应用开发-05 拉出
- hdu 1426
- web上进行增改数据不起作用的部分原因分析
- 关于JQuery动态显示与隐藏
- 别混淆你想要什么和能否实现
- thread03
- CPLD板播放音乐“两只老虎”
- 还在为不写技术博客找理由?写好一篇博客,只需四步
- spring里的事物