现在有了一个非常基本的 GUI,这个窗口中包含一个按钮和一个非常简单的菜单。(菜单是自动增加的。)不过它什么也做不了。我们还没有编写代码来告诉程序当有人点击按钮时要做些什么。这就像有一辆汽车,虽然有车身和四个轮子,但是没有发动机。尽管看起来不错,可是哪里也去不了。
我们需要一些代码让程序运行起来。对于 PythonCard 程序来说,起码要有下面这些代码:
from PythonCard import modelclass MainWindow(model.Background): passapp = model.Application(MainWindow)app.MainLoop
由 Python 就可以想见,PythonCard 中的一切都是对象。每个窗口都是对象,要用 class 关键字定义。把上面的代码键入到 IDLE 或 SPE 编辑器窗口中,保存为 MyFirstGui.py。这个名字很重要。它必须与资源文件同名,不过不包括 .rsrc 部分。
主代码:MyFirstGui.py
资源文件:MyFirstGui.rsrc.py
这两个文件还要保存在同一个位置上,这样 Python 才能把这两个文件都找到。
现在可以从 SPE 或 IDLE 运行这个程序。你会看到窗口打开,可以点击按钮,不过什么都不会发生。我们已经让程序运行起来,但是还没有为按钮编写任何代码。现在关闭这个程序(可以点击标题栏中的 ×,也可以使用 File Exit 菜单来关闭程 序)。
下面来完成一个简单的任务。点击按钮时,让它移动到窗口中的一个新位置。从第 4 行删除 pass 关键字,再增加代码清单 20-1 中的第 5 行到第 12 行代码。
代码清单 20-1 为 Hello 按钮增加一个事件处理器
一定要让整个 def 块比 class 语句多缩进 4 个空格,如代码清单所示。为什么要这么做?这是因为所有组件都在窗口中,也就是说要作为窗口的一部分。所以按钮的代码应该放在这个类定义内。
试着运行这个代码,看看会发生什么。下一节将详细分析这个代码。