Python Tkinter界面应用开发-02 开始番茄钟应用开发

视频教程观看地址:http://study.163.com/course/courseMain.htm?courseId=1003853008

首先,我们来创建新脚本,命名为pymodoro:

和上节课一样,我们只需要import tkinter,然后,我们需要把一个窗口调出来:
import tkinter   root = tkinter.Tk()   root.mainloop()
在这里,为了编写更健壮的代码,所以我们可能在这里面加一个判断:
if __name__ =='__main__'
这样当创建程序时,只有在主函数中,才会运行这个脚本。现在,我们要创建一个控制整个应用程序的类。所以接下来,我们要创建类pymodoro,它的__init__函数接受一个参数master,这个master参数,你可以把它想象为主窗口,主应用程序,主进程,所以,我们会说self.master = master.
import tkinter   class Pymodoro:     def __init__(self, master):         self.master = master
然后在这里我们把root传递给Pymodoro:
if __name__ =='__main__': root = tkinter.Tk() Pymodoro(root) root.mainloop()
如果我们现在运行它,那么,我们得到一个像我们以前做的一个窗口。只有一个白色的方形。没什么变化。 所以,我们如何能够更灵活的把东西放在窗口中呢?实际上,我们可以使用网格,通常当我们使用网格时,我们会创建一个框架,框架只是一个不可见的框,我们可以把网格放到这个框里。所以,在我们的__init__函数中,我们输入:
class Pymodoro: def __init__(self, master): self.master = master self.mainframe = tkinter.Frame(self.master, bg='white')
这个frame属于master.然后,我们将背景设置为白色。 然后我们要打包这个frame。我们想确保frame占据整个窗口。所以填充就是tkinter.BOTH,Expand是True。
class Pymodoro: def __init__(self, master): self.master = master self.mainframe = tkinter.Frame(self.master, bg='white') self.mainframe.pack(fill = tkinter.BOTH, expand = True)
如果我们运行这个,依然不会看到任何新的变化。 所以现在,来创建一个新函数:build_grid,这个函数用于控制网格的创建:
    def __init__(self, master): self.master = master self.mainframe = tkinter.Frame(self.master, bg='white') self.mainframe.pack(fill = tkinter.BOTH, expand = True)       def build_grid(self):         self.mainframe.columnconfigure(0, weight = 1)         self.mainframe.rowconfigure(0, weight=0)         self.mainframe.rowconfigure(1, weight=1)         self.mainframe.rowconfigure(2, weight=0)
那么,以上代码做了什么呢?所以我们有一个网格,它有列和行。所以,这里我们要有一列,它是列0,它的权重为1,这个权重1意味着它可以按任何比例调整大小。也就是说,这一列大小是可变的,然后在这里我们有三行.行0到行2,注意到,顶部行和底部行,他们的权重为0,所以他们不会调整大小,他们将保持自己的大小。但是行1,在中间,因为它需要占用尽可能多的空间,所以我们希望中间的那行大小可变。 那么,现在我们要在__init__函数中调用self.build_grid,
    def __init__(self, master): self.master = master self.mainframe = tkinter.Frame(self.master, bg='white') self.mainframe.pack(fill = tkinter.BOTH, expand = True)   self.build_grid()
所以现在网格已经建好了,接下来,让我们添加横幅,也就是我们的标志到窗口的顶部。 所以,再次创建一个自己的函数: build_banner() ,它不需要任何参数。这里我们将创建一个label文本,当然,它将属于mainframe。然后,我们将背景设置为红色。文本,我们设置为Pymodoro。前景色设为白色。最后再设置字体,设置字体必须传递一个元组,在这种情况下,我想要微软雅黑,然后字体大小,我们设为24.
    def build_grid(self): self.mainframe.columnconfigure(0, weight = 1) self.mainframe.rowconfigure(0, weight=0) self.mainframe.rowconfigure(1, weight=1) self.mainframe.rowconfigure(2, weight=0)       def build_banner(self):         banner = tkinter.Label(             self.mainframe,             bg = 'red',             text = '番茄钟',             fg = 'white',             font = ('微软雅黑', 24)         )
接下来,我们要把这个文本添加到我们的网格中,所以我们要调用banner.grid. 我们希望它在行0,因为我们希望它在顶部,然后,我们希望它在列0,然后,我们要传递粘性,这个粘性它是一个字符串。这里我们可以想象有一个正方形,顶部是北,侧面是东和西,底部是南。因此我们需要指定文本需要调整的方向。我们只会水平调整,而不会垂直调整,所以我们只需要担心两侧,所以键入ew.,分别代表的是西边和东边。 然后,我想给它在两侧一点点填充,所以padx = 10,pady = 10., x是水平,y是垂直的..Padding就是内容和边缘之间的空白。
    def build_banner(self): banner = tkinter.Label( self.mainframe, bg = 'red', text = '番茄钟', fg = 'white', font = ('微软雅黑', 24) ) banner.grid( row = 0,column = 0, sticky = 'ew', padx = 10, pady = 10 )
然后我们回到构造函数中,调用build_banner。
    def __init__(self, master): self.master = master self.mainframe = tkinter.Frame(self.master, bg='white') self.mainframe.pack(fill = tkinter.BOTH, expand = True)   self.build_grid() self.build_banner()
所以现在,让我们尝试运行它。看看我们得到什么。你看,这里我们已经得到的了一个横幅,非常棒。   更多精彩内容尽在视频中! 本文固定链接: http://www.oxox.work/web/tkinter/begin-dev/ | 虚幻大学

查看原文: http://www.oxox.work/web/tkinter/begin-dev/

你可能感兴趣的:(Python Tkinter界面应用开发-02 开始番茄钟应用开发)