我正在尝试在Python 3.6中使用python-vlc和Gtk创建GUI应用程序。但是,当我尝试访问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-我使用Ubuntu 17.10作为操作系统,默认情况下使用Gnome Shell。

最佳答案

我认为这是因为默认情况下Gtk + 3.0应用程序将直接通过Wayland运行。要强制应用通过XWayland(Wayland上的X客户端),请使用

GDK_BACKEND=x11 your-app


我猜这是多少X11 apps can be used on Wayland

10-04 18:53