2017-11-09 14 views
1

Python 3.6でpython-vlcとGtkを使用してGUIアプリケーションを作成しようとしています。私は私のGtkDrawingAreaウィジェット(私のプレイヤーの画面でそれをバインドする)のxidがアクセスしようとする。しかし、私はエラーメッセージGtkDrawingAreaウィジェットのxidを取得できません

はAttributeError取得:「GdkWaylandWindow」オブジェクトが属性を持っていませんがここで

「をget_xid」私はGtkDrawingAreaウィジェットのXIDを取得しようとしているコードの一部です:だから

def vlc_realize_handler(self, widget, data=None): 
    self.win_id = widget.get_property('window').get_xid() 
    self.player.set_xwindow(self.win_id) 

、私はこのウィジェットで私のプレーヤーにバインドするのですか?

PS - 私はデフォルトでGnomeシェルを使用している私のオペレーティングシステムとしてUbuntu 17.10を使用しています。

+2

これはXウィンドウシステムのウィンドウのIDを参照するため、xidと呼ばれています。 WaylandはXウィンドウシステムではないため、ウィンドウにはxidsがありません。 –

+0

ログインギアのアイコンで、XorgでUbuntuを選択します。あなたがGstreamer wayland sinkのwayland searchを試したいのであれば。 –

+0

奇妙なことに、私はPyGTK2を使用する古いアプリを保守しており、 'self.player.set_xwindow(self.window.xid)'が動作します:\ – Phoenix87

答えて

0

これは、Gtk + 3.0アプリケーションがデフォルトでWaylandを直接実行するという事実に起因すると思います。 XWayland(ウェイランド以上のXクライアント)を通過するアプリを強制するために、私はこれがどのように多くのX11 apps can be used on Waylandだと思い

GDK_BACKEND=x11 your-app 

を使用してアプリを起動。

+0

ありがとう!これは助け:) –

関連する問題