Tkinter 入门
前页 | 第三章. Hello, Again | 后页

# 代码描述

下面这个简单的应用程序被写为一个类,这个类的构建器( `__init__` 方法) 被传入了一个父组件( `master` ),在类中它被添加了若干个子组件.构建器首先创建了一个Frame组件,frame是一个简单的容器,在这个例子里它被用来存放另外两个组件.

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

frame 实例被保存到一个叫做 frame的 内部变量(local variable)里.在创建这个 widget 之后, 我们立刻调用pack方法使这个 frame 显示出来.

我们创建了两个 Button widgets ,作为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)

这一次,我们传递几个选项(options)给构建器 , 作为关键参数. 第一个button 的标签被指定为"QUIT", 并且被显示为红色( `fg` 是 `foreground 的缩写` ). 第二个 button 的标签被指定为"Hello". 这两个 button 都有一个 command 选项.这个选项指定了一个函数或者一个绑定的方法在 其被点击时执行.

button的实例被存储在实例属性中,他们都被packed, 但是这次与第一个例子不同的地方是,pack 带有一个 `side=LEFT` 参数. 它的意思是,它将被放置到 frame 剩余空间的最左方; 第一个 button 被放置到 frame的最左边, 第二个就放置在第一个button的右边 (就是frame中左边剩余的空间). 缺省的, 每个组件的side都是相对于它的父组件 (也就是说,button的side是在frame中的side,而跟root没有直接联系)如果side没有给出, 它将缺省为 `TOP` .

下面给出的是 "hello" button 的回调内容. 在任意时刻点击"hello" button ,在控制台将会打印出一个消息:

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

最后,我们提供了一些脚本级代码来创建一个 `Tk` root 组件, 和 `App` 类的实例使用root 组件作为它的父类:

     root = Tk() app = App(root) root.mainloop()

最后调用 root 的 `mainloop` 方法 . 它进入 Tk 事件循环(event loop), 这样,应用程序将等待,直到 `quit` 方法被调用 (就是点击 QUIT button), 或者窗口被关闭.

前页 | 首页 | 后页
Hello, Again | 向上 | 更多关于组件参考