Python TK编程第一部分 Hello Again

当你想写大一点的程序的时候,将你的代码封装到一个或者多个类里会是一个不错的办法。下面'hello world'这个例子来自Matt Conway的Tkinter Life Preserver.

 

[python] view plain copy
  1. from Tkinter import *  
  2.   
  3. class App:  
  4.   
  5.     def __init__(self, master):  
  6.   
  7.         frame = Frame(master)  
  8.         frame.pack()  
  9.   
  10.         self.button = Button(  
  11.             frame, text="QUIT", fg="red", command=frame.quit  
  12.             )  
  13.         self.button.pack(side=LEFT)  
  14.   
  15.         self.hi_there = Button(frame, text="Hello", command=self.say_hi)  
  16.         self.hi_there.pack(side=LEFT)  
  17.   
  18.     def say_hi(self):  
  19.         print "hi there, everyone!"  
  20.   
  21. root = Tk()  
  22.   
  23. app = App(root)  
  24.   
  25. root.mainloop()  
  26. root.destroy() # optional; see description below  

当你运行程序时,会出现下面的窗口。

 

如果你点击右边的按键, “hi there, everyone!” 将会输出在控制台。 如果你点击左边的按键,程序就会终止。

程序讲解:

这个简单的程序是用类写的. 构造器 (__init__ 方法) 接受一个主窗口作为参数(root), 然后创建了几个子控件。 构造器首先创建了一个 Frame控件。frame是一个简单的容器,在这个例子中,他仅仅用来防止其它2个控件。

class App:
    def __init__(self, master):
        frame = Frame(master)
        frame.pack()

我们通过Frame类创建一个实例,并把它保存为实例的局部变量 frame. 之后,我们对其使用pack方法使其可见。

然后我们创建2个Button,作为frame的子控件。

self.button = Button(frame, text="QUIT", fg="red", command=frame.quit)
self.button.pack(side=LEFT)

self.hi_there = Button(frame, text="Hello", command=self.say_hi)
self.hi_there.pack(side=LEFT)

这一次我们通过关键字参数的形式给构造函数船体几个参数。 第一个button的text属性为“QUIT”,并设置前景色为红色。第一个button的text属性为“Hello”.。这两个Button的command选型也都设置了参数。这个选项用来设置一个函数或者绑定的方法,当button被点击时,相应的函数或者方法就会调用。 

这两个button实例作为实例属性存储。他们都使用pack方法,但这次还使用了 side=LEFT参数。这意味着他们将会被尽可能的放置在frame的左边; 第一个button会被放在frame的左边,第二个button会紧贴着第一个button放置。一般来说,控件被放置的位置都是相对于他们的主控件而言的。如果没有指定side选项,默认为side=TOP.

 “hello” button 的回调函数如下所示。当用鼠标点击button时,它至是简单的想控制台输出一行信息:

def say_hi(self):
    print "hi there, everyone!"

最后,我们写一些代码创建 Tk root 窗口, 并把它作为参数传递给App类,它会成为其它控件的父窗口。

root = Tk()

app = App(root)

root.mainloop()
root.destroy()

调用 mainloop 使Tk进入事件循环, 当点击QUIT或者关闭窗口时程序才会终止。

destroy只有你在特殊的环境下运行这个例子才需要;当时间循环被终止的时候,它会明确的释放这个窗口。 一些开发环境只有调用这个方法才会终止Python进程。

posted @ 2017-03-16 11:22  monster_ygs  阅读(482)  评论(0编辑  收藏  举报