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/
原创粉丝点击