杂乱脚本连接信号给出 ValueError
Clutter Script connect signals gives ValueError
我正在尝试使用 python 使 ui 变得混乱。
这是我的代码:
#!/usr/bin/env python
from gi.repository import Clutter, ClutterGst
import sys
class MainWindow:
def __init__(self):
script = Clutter.Script.new()
script.load_from_file("mainwindow.json")
stage = script.get_object("main-stage")
script.connect_signals(stage)
stage.show_all()
def main():
ClutterGst.init(sys.argv)
main = MainWindow()
Clutter.main()
if __name__ == "__main__":
sys.exit(main())
这里是mainwindow.json
{
"id": "main-stage",
"type": "ClutterStage",
"signals": [
{
"name": "destroy",
"handler": "clutter_main_quit"
}
]
}
但是调用connect_signals方法时报错:
Traceback (most recent call last):
File "main.py", line 19, in <module>
sys.exit(main())
File "main.py", line 15, in main
main = MainWindow()
File "main.py", line 10, in __init__
script.connect_signals(stage)
ValueError: Pointer arguments are restricted to integers, capsules, and None. See: https://bugzilla.gnome.org/show_bug.cgi?id=683599
只排除connect_signals就成功了。
connect_signals()
方法不可自省,因为它假定所有可调用符号都将通过 dlsym()
解析,这仅适用于 C。
对于解释型语言和对符号执行名称修改的语言,您必须使用 connect_signals_full()
方法,并传递一个可以解析 [=21] 中使用的信号处理程序名称的函数=] 将描述数据转换为可调用对象。
例如,您可以重复使用 pygobject 中的 Gtk
重写代码来实现相同的功能:https://git.gnome.org/browse/pygobject/tree/gi/overrides/Gtk.py#n441
我正在尝试使用 python 使 ui 变得混乱。
这是我的代码:
#!/usr/bin/env python
from gi.repository import Clutter, ClutterGst
import sys
class MainWindow:
def __init__(self):
script = Clutter.Script.new()
script.load_from_file("mainwindow.json")
stage = script.get_object("main-stage")
script.connect_signals(stage)
stage.show_all()
def main():
ClutterGst.init(sys.argv)
main = MainWindow()
Clutter.main()
if __name__ == "__main__":
sys.exit(main())
这里是mainwindow.json
{
"id": "main-stage",
"type": "ClutterStage",
"signals": [
{
"name": "destroy",
"handler": "clutter_main_quit"
}
]
}
但是调用connect_signals方法时报错:
Traceback (most recent call last):
File "main.py", line 19, in <module>
sys.exit(main())
File "main.py", line 15, in main
main = MainWindow()
File "main.py", line 10, in __init__
script.connect_signals(stage)
ValueError: Pointer arguments are restricted to integers, capsules, and None. See: https://bugzilla.gnome.org/show_bug.cgi?id=683599
只排除connect_signals就成功了。
connect_signals()
方法不可自省,因为它假定所有可调用符号都将通过 dlsym()
解析,这仅适用于 C。
对于解释型语言和对符号执行名称修改的语言,您必须使用 connect_signals_full()
方法,并传递一个可以解析 [=21] 中使用的信号处理程序名称的函数=] 将描述数据转换为可调用对象。
例如,您可以重复使用 pygobject 中的 Gtk
重写代码来实现相同的功能:https://git.gnome.org/browse/pygobject/tree/gi/overrides/Gtk.py#n441