如何在PyGObject中的Gtk.Container上调用gtk_container_remove()?

时间:2012-11-17 12:45:44

标签: python gtk pygobject

在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 ()函数?

1 个答案:

答案 0 :(得分:2)

Gtk.Statusbar覆盖remove函数,另一个函数具有不同的签名。您可以尝试销毁小部件,容器,状态栏,它将被通知,它将删除小部件,希望您不再需要它。

否则你可以尝试:Gtk.Container.remove(statusbar, widget)