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 に答える