0

我正在使用 python 和 pygtk

我有一个继承 TreeView 类的类:

from gtk import TreeView
class FolderView(TreeView):

但是当我将它添加到 HBox 容器中时:

folderView = FolderView
hbox.add(folderView)

我在运行时收到以下错误

TypeError: Gtk.Container.add() argument 1 must be gtk.Widget, not GObjectMeta

通过反射,我已经确认 gtk.Widget 在继承路径中,所以在我的脑海中它应该可以工作。谁能告诉我我不理解 Python 和 pygtk 的哪一部分?

4

1 回答 1

0

应该是folderView = FolderView()。查看如下交互提示结果:

>>> from gtk import TreeView
>>> class FolderView(TreeView):
...     pass
... 
>>> fw = FolderView()
>>> from gtk import HBox
>>> hbox = HBox()
>>> hbox.add(FolderView) # this is passing the class
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Gtk.Container.add() argument 1 must be gtk.Widget, not GObjectMeta
>>> hbox.add(FolderView()) # and this is actually creating an instance
>>> hbox.get_children()
[<FolderView object at 0x9ab1964 (GtkTreeView at 0x992a240)>]
于 2013-03-23T20:52:16.240 回答