- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下 Python 2.7/PyGObject 3.0/PyGST 0.10 模块:
from gi.repository import Gtk, Gdk, GdkPixbuf
import pango
import pygst
pygst.require('0.10')
import gst
import Trailcrest
import os, sys
import cairo
from math import pi
class Video:
def __init__(self):
def on_message(bus, message):
if message.type == gst.MESSAGE_EOS:
# End of Stream
player.seek(1.0, gst.FORMAT_TIME, gst.SEEK_FLAG_FLUSH, gst.SEEK_TYPE_SET, 5000000000, gst.SEEK_TYPE_NONE, 6000000000)
elif message.type == gst.MESSAGE_ERROR:
player.set_state(gst.STATE_NULL)
(err, debug) = message.parse_error()
print "Error: %s" % err, debug
def on_sync_message(bus, message):
if message.structure is None:
return False
if message.structure.get_name() == "prepare-xwindow-id":
Gdk.threads_enter()
print "Run before"
Gdk.Display.get_default().sync()
print "Run after"
win_id = videowidget.window.xid
imagesink = message.src
imagesink.set_property("force-aspect-ratio", True)
imagesink.set_xwindow_id(win_id)
Gtk.gdk.threads_leave()
def click_me(event, data=None):
player.seek(1.0, gst.FORMAT_TIME, gst.SEEK_FLAG_FLUSH, gst.SEEK_TYPE_SET, 5000000000, gst.SEEK_TYPE_NONE, 6000000000)
win = Gtk.Window()
win.set_resizable(False)
win.set_decorated(False)
win.set_position(Gtk.WindowPosition.CENTER)
fixed = Gtk.Fixed()
win.add(fixed)
fixed.show()
videowidget = Gtk.DrawingArea()
fixed.put(videowidget, 0, 0)
videowidget.set_size_request(640, 480)
videowidget.show()
# Setup GStreamer
player = gst.element_factory_make("playbin", "MultimediaPlayer")
bus = player.get_bus()
bus.add_signal_watch()
bus.enable_sync_message_emission()
#used to get messages that GStreamer emits
bus.connect("message", on_message)
#used for connecting video to your application
bus.connect("sync-message::element", on_sync_message)
player.set_property("uri", "file://" + os.getcwd() + "/VID/BGA-HABT-001.ogv")
player.set_state(gst.STATE_PLAYING)
win.show()
def main():
Gdk.threads_enter()
Gtk.main()
return 0
if __name__ == "__main__":
Video()
main()
我总是遇到此错误,视频会在新窗口中打开,而不是在现有窗口中打开。
Traceback (most recent call last): File "video.py", line 32, in on_sync_message win_id = videowidget.window.xid AttributeError: 'DrawingArea' object has no attribute 'window'
如何解决这个问题,让视频显示在我创建的窗口中,而不是新窗口中?
顺便说一下,这个问题是在我从 PyGTK 2.24 切换到 PyGObject 3.0 之后才开始出现的。
最佳答案
(转载自 GNOME PyGObject 3 Bug Report 663360。答案归功于 Timo Vanwynsberghe)。
有几点需要注意: - 必须先实现绘图区,然后才能获得它的 GdkWindow - 显然,您不能直接获取 window 属性 - 您需要为 xid 方法导入 GdkX11
考虑到这一点,这是一个最小的工作示例:
from gi.repository import GdkX11, Gtk
class App:
def __init__(self):
win = Gtk.Window()
win.resize(400, 400)
win.connect('delete-event', Gtk.main_quit)
da = Gtk.DrawingArea()
win.add(da)
win.show_all()
print da.get_property('window').get_xid()
if __name__ == "__main__":
App()
Gtk.main()
关于python - DrawingArea 无法获取 XID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7975899/
我有一个 GTK+ DrawingArea,它应该在左上角显示一个矩形。当我使用 Cairo 绘制矩形时,整个绘图区域都填充了矩形的颜色。我怎样才能防止这种情况发生?开罗为何这么做?我做错了什么? #
我目前在框架内加载一个 DrawingArea 小部件 - 它总是扩展以填充框架。然后我可以在 DrawingArea 上设置 configure 事件来分配一个与窗口大小相同的像素图,在它上面绘制,
我想通过继承 DrawingArea Widget 来实现自定义小部件,为此我需要使用 cairo 进行绘制。似乎在 gtk3 中引入了一个名为“draw”的新信号。如何在小部件内部绘制? map 和
我想更新 DrawingArea 中的 cairo 绘图。我试图通过使用新函数作为参数调用 DrawingArea::connect_draw(...) 来实现这一点。我的问题是它没有替换原来的绘图函
我正在尝试使用 GTK、Cairo 和 Glade 在 Rust 中构建一个 GUI。我想使用 gtk::DrawingArea 绘制一个运动场,但我不知道如何使用它。我有这个: extern cra
我正在根据找到的基本教程编写一个 PyGtk 绘图程序 here . 有什么方法可以将图像添加到绘图区域,这样您仍然可以在图像上绘图吗?例如邮票或导入的照片。我试过添加 gtk.Image() 但 g
我有以下 Python 2.7/PyGObject 3.0/PyGST 0.10 模块: from gi.repository import Gtk, Gdk, GdkPixbuf import pa
我正在尝试制作简单的正方形,您可以在其中使用鼠标进行绘画。问题是,每当绘制信号发生时,cairo 表面似乎已完全清除。我理解这一点,因为在第一个 queue_draw() 之后,白色背景消失了,我看到
我有一个绘图区,我在里面画了一些图形或图像,所以我有这个回调来截屏: void CanvasToolBox::actionCanvasCamera() { auto root = Gdk::W
我正在使用 gtkmm 和 cairo 开发一款平台游戏,但我找不到将图像设置为背景的方法,因此我不必在每次绘制事件时都重新绘制它。我正在将图像作为 pixbufs 进行管理。这真的可能吗,还是我想错
我想画一些相框,一张一张的Gtk::DrawingArea .在应用开始时,我需要获取DrawingArea的大小, 分配一个 RGB 缓冲区, 但是, DrawingArea::get_width(
我创建了一个 Gtk.grid,其中包含一堆可调整大小并可在网格周围拖动的按钮。 我还创建了一个 Gtk.drawingarea 来绘制网格线。我希望让我的按钮像这样透明: Gtk.Button.se
我想使用 PIL 将 gtk.DrawingArea() 对象内容保存到 jpeg 文件。我特别想添加到 this script制作照片的可能性。我找到了如何save image to jpeg 。我
我有一个使用 Glade 创建的界面。它包含一个 DrawingArea 和按钮。 我尝试创建一个线程,每隔 X 次刷新我的 Canva。几秒钟后,我收到如下错误消息: “X 窗口服务器 0.0”、“
我正在创建一个用于数据可视化的小工具。GUI 是用 Pygtk 创建的,非常简单。用户输入文件名后,可以按“calc”按钮查看输出。输出由 pycairo 渲染并呈现在 gtk.DrawingArea
先上GTKmm documentation example在 more complex clock example 上,他们正在继承 public Gtk::DrawingArea 来构建他们的应用程
我在 CEF Python 3 ( link ) 上得到这段代码 ... self.container = gtk.DrawingArea() self.container.s
我在 Ubuntu 12.04 LTS 32 位上使用带有 GNU 工具链和 gtkmm3 的 C++11。我一直在玩 Programming with gtkmm 3 中 gtkmm3 的一些示例。
我有一个使用 Cairo image surface 的小型 PyGI 项目,然后我用 surface pattern 缩放它并在 Gtk.DrawingArea 上渲染。 我想将缩放 版本写入 PN
我正在使用“gtkmm”制作一个 GUI 程序。我想在“Gtk::DrawingArea”小部件上绘制一些图形,但我希望该小部件“可调整大小”,所以当我绘制时,让我们说一条从“(0, 0)”到“(50
我是一名优秀的程序员,十分优秀!