2

クラスと関数の間でGTKオブジェクトを渡す方法は?

GTKWindow である GUI クラスと、再生ボタンとスライダーを備えた vbox であるプレーヤー クラスと、GST パイプライン プレイビンがあります。

(疑似コード)

class Player(object):
    def __init__(self):
        self.play_button = gtk.Button()
        self.slider = gtk.HScale()

        self.hbox = gtk.HBox()
        self.hbox.pack_start(self.play_button, False)
        self.hbox.pack_start(self.slider, True, True)
        def getbox():
            return self.hbox

class GUI:
    def __init__(self, dname = None):
        player = Player()
        playerbox = playerbox.getbox
        vbox = gtk.VBox()
        vbox.pack_start (playerbox, False, False, 1)

しかし

TypeError: Gtk.Box.pack_start() argument 1 must be gtk.Widget, not instancemethod

たぶんそれは正しい方法ではなく、すべてのボックスは毎回同じクラスに存在する必要があります..?

4

1 に答える 1

2

メソッドを実際に呼び出すことを怠っていgetboxます。の代わりにplayerbox = player.getbox、書く必要がありますplayerbox = player.getbox()。前者を記述すると、関数オブジェクト自体が抽出されます。これが、引数 1 としてpack_start受け取っていると不平を言う理由です。instancemethod

于 2013-08-10T09:50:30.370 に答える