2013-03-23 33 views
0

我使用Python和PyGTK的PyGTK的繼承產生誤差treewiew和container.add

我有一個繼承樹視圖類的類:

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我不理解?

回答

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)>] 
+0

我紅着臉....我完全錯過了,這是不實例化。猜猜這對我來說有點晚了,我應該去睡覺。感謝您的幫助。 – user2203199 2013-03-23 20:56:06

+0

歡迎來到Stackoverflow。 – phineas 2013-03-23 20:57:56