感谢Lars Wirzenius为PyGtk编写的老版本的教程,这里修改了教程仅仅是对Gtk+和PHP-GTK 2对接,小牛仔翻译本教程到 PHP-GTK 2开发的技术文档。 Gtk+ 2.0版本介绍了它的3个基本的树和列表元件。1.0版本拥有GtkList和GtkTree,1.2版本拥有GtkCList和GtkCTree,现在2.0版本拥有GtkTreeView,它既是一个列表也是一个树。每一个版本,这些元件的功能和用户体验在不断地提高。 GtkTreeView使用 Model/View/Controller的方法。这意味着代码被划分为一个数据结构,代表用户数据(模型Model),显示数据和用户之间相互影响(视图View),一些将事物友好连接起来的逻辑代码(控制器Controller)。模型继承至GtkTreeModel(实际上,类继承至该接口),带有一些助手的GtkTreeView视图,以及用户自定义代码的控制器。 这听起来是非常没有必要的复杂,但是复杂是相对的,然后这个方法实际上简化了程序结构。举个例子,我们将相同的数据(比如 Model)按不同的方式或者不同窗口放置在一起。比如,一个程序员的编辑器:相同的源代码也许在同一时间被放置在不同的窗口,如果一个窗口的改变了,那么其它的也需要被改变。因此将text表单与窗口分离存放相对将text表单存放在每个窗口是非常明智的选择。 这篇文章的示例的程序将允许用户管理一个文件夹树。为了保持代码简洁,这些文件夹是虚拟的,不是文件系统真实存在的。实际上这个例子是Lodju的衍生品,其中的文件夹是与文件系统没有关联的。 Gtk+2.0的官方GtkTreeView引用文档API应该与这篇教程一起被同时阅读,尽管它们在细节上有些不同。 感谢为Gtk+发展做出贡献的的IRC组织的鼓励和反馈。