2024-06-16 11:57:48 发布
网友
我有一个用Python、pygtk2.24和PyGST(GStreamer)构建的项目。我的视频在gtk图纸区域对象。在
但是,我需要在这个视频播放时显示其他GUI元素。(请不要问为什么,相信我)现在,他们似乎都落后了。在代码中,视频对象(和gtk图纸区域)声明并放入gtk.固定首先,紧随其后。在
那么,我该怎么做呢?是否需要更改GStreamer正在播放的对象?我知道这是有可能的……我见过GStreamer程序,在视频上面有按钮和标签。在
提前谢谢!在
可能对操作没用,但我花了很长时间寻找一种方法,将小部件放在gtk.gdk.可提取元素(可以是静态绘制的图像、动画或视频),然后我终于在pygtk2中找到了这个方法。在
这是我想出的一个链接:http://bazaar.launchpad.net/~damien-moore/picty/trunk/view/642/modules/picty/overlay_widgets.py
这包括3个自定义类:
比例布局:一个自定义的实现gtk.集装箱它允许用户使用比例定位子部件。在
DrawableOverlay:一个事件框,它发出一个“draw”事件供用户连接和绘制,并在顶部显示一个比例布局。在
drawableOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlay。在
示例main程序说明了如何使用它们。代码应该相当简单,以适应视频应用程序。在
您可以在gtk3.2及更高版本中使用^{}来实现这一点。在
如果您不能升级,下面是一个老式方法的总结:连接到DrawingArea的expose-event信号,并使用Cairo绘制自己的信息。当信息更改时,使用widget.queue_draw()触发绘图区域的重绘。确保处理程序在将实际视频绘制到绘图区域的处理程序之后运行。这将适用于标签和非交互式GUI元素。在
DrawingArea
expose-event
widget.queue_draw()
如果你想让一个真正起作用的GUI元素悬停在你的视频上方,那就更复杂了,我不知道怎么做。我不认为Fixed保证任何z顺序。我怀疑你的按钮和其他没有被绘制到绘图区域的视频所覆盖,所以可能触发你的expose-event处理程序中的那些按钮的重画将起作用。在
Fixed
可能对操作没用,但我花了很长时间寻找一种方法,将小部件放在gtk.gdk.可提取元素(可以是静态绘制的图像、动画或视频),然后我终于在pygtk2中找到了这个方法。在
这是我想出的一个链接:http://bazaar.launchpad.net/~damien-moore/picty/trunk/view/642/modules/picty/overlay_widgets.py
这包括3个自定义类:
比例布局:一个自定义的实现gtk.集装箱它允许用户使用比例定位子部件。在
DrawableOverlay:一个事件框,它发出一个“draw”事件供用户连接和绘制,并在顶部显示一个比例布局。在
drawableOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlayOverlay。在
示例main程序说明了如何使用它们。代码应该相当简单,以适应视频应用程序。在
您可以在gtk3.2及更高版本中使用^{} 来实现这一点。在
如果您不能升级,下面是一个老式方法的总结:连接到
DrawingArea
的expose-event
信号,并使用Cairo绘制自己的信息。当信息更改时,使用widget.queue_draw()
触发绘图区域的重绘。确保处理程序在将实际视频绘制到绘图区域的处理程序之后运行。这将适用于标签和非交互式GUI元素。在如果你想让一个真正起作用的GUI元素悬停在你的视频上方,那就更复杂了,我不知道怎么做。我不认为
Fixed
保证任何z顺序。我怀疑你的按钮和其他没有被绘制到绘图区域的视频所覆盖,所以可能触发你的expose-event
处理程序中的那些按钮的重画将起作用。在相关问题 更多 >
编程相关推荐