上节课,所以我们创建了一个主框架,在主框架中创建了一个横幅,但是这只是界面的一部分,这节课我们就来完善它。现在,我们需要按钮来启动和停止我们的计时器。所以,让我们创建2个按钮,并将它们添加到窗口的底部。所以,我首先在初始函数中调用self.build_buttons:
self.build_gird() |
然后我们来到类的最下面,实现build_buttons这个函数.
我们最终想要的效果就是,创建两个按钮,它们在窗口的底部。所以我们这里还是使用框架,我要做一个新的框架,
所以,我们创建一个新的框架。buttons_frame = tkinter.Frame,它属于我们上节课创建的主框架mainframe中。也就是说,这个新的按钮框架在mainframe中。
def build_buttons(self): buttons_frame = tkinter.Frame(self.mainframe) |
然后我们把这个按钮框架放在主框架网格的第2行,第0列,也就是最后一行。它的粘性,东南西北,然后我希望它被填充10。
def build_buttons(self): |
现在,让我们配置我们的按钮框架的网格,我们只有一行,这一行不会调整大小。所以,它的行的权重为0,我们之前已经设置好了,所以这里不需要设置,现在我们来看看列。这里列的大小是随时改变的,所以列0和列1都将有1的权重,
buttons_frame.grid(row = 2, column = 0, sticky = 'nsew',padx = 10, pady = 10) |
现在,让我们来构建按钮。我们将有一个start_button,然后调用tkinkter.Button,它将属于buttons_frame框架,它的文本是start,
然后,让我们做一个stop_button。文本将是Stop.
buttons_frame.columnconfigure(1, weight=1) |
现在让我们为按钮分配网格, start_button.grid,我想要它在行0和列0.然后我想它是两侧变化。接着,对于stop_button也差不多。唯一的区别就是它在列1,而不是列0。
self.stop_button = tkinter.Button( |
所以,让我们运行它看看,没毛病。
所以,我们可以点击start。我们可以点击stop。这里不做发生什么,没关系,后面我们再来添加命令。
那么,现在,我们来开始写计时器.所以我们在这里,我们将调用self.build_timer。
self.build_gird() |
然后,我们来实现这个函数。def build_timer。我想在这里创建一个Label标签。计时器将属于主框架,因为我们会把它放在网格的中间.文本现在设为TIMER,然后,给它一个大字体。字体是微软雅黑,大小是36个像素高。接着,我们把定时器放入到网格中.我们希望它在行1,列0.它粘到所有四个方向。
self.stop_button.grid(row=0, column=1, sticky='ew') |
运行看下效果,虽然。现在,我们有定时器,我们可以调整它的大小,位置也保持在中间,但问题是,我们希望有一个时钟在这里不停的变化。所以,我们需要创建一个变量。
所以让我们来到构造函数中,我们创建一个timer_text,它将是StringVar也就是字符串类型:.
self.mainframe.pack(fill = tkinter.BOTH, expand = True) |
然后下来这里,定时器的文本就不再是TIMER了 ,它将是我们刚刚创建的变量self.timer_text.get.
def build_timer(self): |
那么,要得到实际的计数。我们还需要一个变量来记录时间。让我们回到构造函数,让我们创建另一个变量。我们会说self.time_left,它是一个IntVar 因为秒数,它总是一个整数。
self.timer_text = tkinter.StringVar() |
现在我们来初始化这个变量,我们知道一个番茄钟的时间是25分钟,一分钟有60秒,所以,在这里,在我们的类外面,我要定义一个常量,DEFAULT_GAP 。所以它的值是60 * 25:
import tkinter |
然后在这里,我创建了这个time_left,现在我要设置它。设置为DEFAULT_GAP.
self.timer_text = tkinter.StringVar() |
现在,番茄钟的默认剩余时间是25分钟,我已经设置了它。那么这节课先到这里。 更多精彩内容尽在视频中!