这篇教程会解决有关PHP-GTK 2信号连接的问题,这是非常有趣和重要的,因为这会让你的应用程序变得可以“点击”。 你可能会注意到在每个PHP-GTK 2的程序后面都有一个声明Gtk::main();这意味着主循环开启堵塞,并且等待操作。一般来说,你不仅仅是创建和显示窗口,然后退出。主循环可以等待一些指令和让你的应用程序一直运行。当你真的需要退出应用程序的时候,你可以通过如下的声明main_quit();来退出主循环。 为了使你更好地使用PHP-GTK 2信号连接相关技术,你有必要深入理解下面的几个概念定义,这是十分有用的: * 方法Action: 当前发生的一些事。比如说“点击按钮”就是一个动作。 * 信号Signal: 当一个事件发生了,应用程序可以通过信号知道什么动作已经发生。 * 回调Callback: 被其它代码调用的一个函数或者方法。 * 信号句柄Signal Handler: 一个请求正在响应的信号,这里会连接上信号。 * 事件Events: 一个监视系统底层的环境变化的连续的驱动流。它们的级别非常的低,这意味着一个非常细小的环境改变就是可以算作一个事件。当一个动作被执行,那么相应的事件将会被触发。比如,“点击按钮”将会触发onClickButton。这跟Javascript中的onclick是一样的。 信号连接的基本构成为连接信号到信号句柄,当然也包括信号句柄本身。它的基本工作是当一个动作发生时,引起PHP-GTK 2连接信号。另一个值得注意的是信号不会保证信号的回调函数或者方法被定义了。比如说,一个信号绑定了一个函数,那么信号并不能保证这个函数被定义了,只有当这个信号的动作被触发了才会要求该方法被定义,否则会抛出错误。你可以定义信号,PHP-GTK 2内部会一直执行它。 一个内部定义的例子,比如我们为一个进度条GtkProgressBar使用 GtkAdjustment 的“value-changed”事件。一些信号有用一个内置的默认句柄,它会一直执行而不管你是否定义信号句柄。 大多数时候,如果你想让你定义的信号发生,这个时候你需要为它创建一个信号句柄。