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

来源:互联网 发布:mac打开网页一直转圈 编辑:程序博客网 时间:2024/05/17 09:22
视频教程观看地址: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 = masterself.mainframe = tkinter.Frame(self.master, bg='white')这个frame属于master.然后,我们将背景设置为白色。然后我们要打包这个frame。我们想确保frame占据整个窗口。所以填充就是tkinter.BOTH,Expand是True。class Pymodoro:def __init__(self, master):self.master = masterself.mainframe = tkinter.Frame(self.master, bg='white')self.mainframe.pack(fill = tkinter.BOTH, expand = True)如果我们运行这个,依然不会看到任何新的变化。所以现在,来创建一个新函数:build_grid,这个函数用于控制网格的创建:    def __init__(self, master):self.master = masterself.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 = masterself.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 = masterself.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/