1

在 PyGObject 项目中,我正在尝试GtkStatusbar使用gtk_container_remove ().

通常在使用 GObject Introspection Python 绑定时,方法名称与 C 函数名称相同,减去“类型前缀”并采用一个不太明确的参数。例如,我调用gtk_box_pack_end ()添加稍后要删除的小部件:

statusbar.pack_end(widget, False, True, 0)

当我尝试通过 删除小部件时statusbar.remove(widget),我看到:

...
  函数中的文件“/usr/lib/python2.7/dist-packages/gi/types.py”,第 43 行
    返回 info.invoke(*args, **kwargs)
TypeError:remove() 正好需要 3 个参数(给定 2 个)

其中一个论点是隐含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>

如何调用gtk_container_remove ()PyGObject 中的函数?

4

1 回答 1

2

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

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

于 2012-11-17T16:20:19.380 回答