首先,以下是
g_signal_connect_after
:
将GCallback函数连接到特定对象的信号。这个
将调用处理程序
.
但是您可能会问,默认处理程序是什么
GSignal description
信号系统的基本概念是发射信号
信号每种类型引入信号,并通过
类型,因此基本上它们是每种类型的设施,即
信号发射主要涉及调用某一组
以精确定义的方式回调。主要有两类
在这些回调中,每个对象回调和用户提供的回调。(尽管
我指的是,信号可以处理任何类型的可实例化类型
将这些类型定义为下面的“对象类型”,因为
是大多数用户将在其中遇到信号的上下文。)每个对象的
回调通常被称为“对象方法处理程序”或
“默认(信号)处理程序”,而用户提供的回调通常是
我们称之为“信号处理器”。
对象方法处理程序在信号创建时提供(此
最常见的情况是在对象类创建结束时,
而用户提供的处理程序经常连接和断开连接
信号发射包括五个阶段,除非提前停止:
现在您知道了信号序列,接下来是
answer to a similar question
但在Gtk邮件列表中:
类的默认处理程序;为什么这样有用?
假设我有一个发出“初始化”信号的对象,其中
在类处理程序之后,以便可以使用已初始化的
对象。
这种性质通常是先安装G_SIGNAL_RUN_;如果
我没有错,这意味着它的默认处理程序将在之前被调用
用户处理程序。
我们连接两种方法的一个简单示例,
on_click2
和
on_click1
(根据本命令),通过使用
connect_after
对于
点击2
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
class Button(Gtk.Box):
def __init__(self, message):
Gtk.Box.__init__(self, spacing=6)
self.set_border_width(10)
button = Gtk.Button.new_with_label(message)
self.pack_start(button, True, True, 0)
button.connect_after("clicked", self.on_click2)
button.connect("clicked", self.on_click1)
def on_click1(self, widget):
print ("Click1 signal. connect normal");
def on_click2(self, widget):
print ("Click2 signal. connect after");
win = Gtk.Window()
button = Button("Test")
win.add (button)
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()
$ python <filename.py>
... (Click test button)...
Click1 signal. connect normal
Click2 signal. connect after