在PyGObject项目中,我尝试使用GtkStatusbar
的gobject-introspection绑定从gtk_container_remove ()
中删除小部件。
通常在使用GObject Introspection Python绑定时,方法名称与C函数名称相同,减去“类型前缀”并采用一个不太明确的参数。例如,我调用gtk_box_pack_end ()
添加我稍后要删除的小部件:
statusbar.pack_end(widget, False, True, 0)
当我尝试通过statusbar.remove(widget)
删除小部件时,我看到:
... File "/usr/lib/python2.7/dist-packages/gi/types.py", line 43, in function return info.invoke(*args, **kwargs) TypeError: remove() takes exactly 3 arguments (2 given)
其中一个参数是隐式self
,其他两个参数显然应该是数字。
这是方法的GIR:
<method name="remove" c:identifier="gtk_container_remove">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<parameter name="widget" transfer-ownership="none">
<type name="Widget" c:type="GtkWidget*"/>
</parameter>
</parameters>
</method>
如何在PyGObject中调用gtk_container_remove ()
函数?
答案 0 :(得分:2)
Gtk.Statusbar
覆盖remove
函数,另一个函数具有不同的签名。您可以尝试销毁小部件,容器,状态栏,它将被通知,它将删除小部件,希望您不再需要它。
否则你可以尝试:Gtk.Container.remove(statusbar, widget)
。