python - 通过其他应用程序在 GtkDrawingArea 中绘图

标签 python linux python-3.x gtk xlib

正如我在标题中提到的,我有两个程序:第一个程序创建一个 GtkWindow、GtkDrawingArea 并返回 GtkDrawingArea 窗口的 XID。第二个收到 XID 并对其执行一些操作(调整大小、绘图等)。调整大小有效,但如果我绘制,我在我的 GtkDrawingArea 上看不到任何东西(它仍然很清楚)。看起来,问题出在 GtkDrawingArea 配置(用于绘图)中,XID 是正确的。这是我用来测试它的示例代码:

#!/usr/bin/python3
from gi.repository import Gtk, Gdk, GdkX11

WIDTH = 800
HEIGHT = 600

drawing_area = Gtk.DrawingArea()
drawing_area.set_size_request(WIDTH, HEIGHT)
drawing_area.add_events(Gdk.EventMask.ALL_EVENTS_MASK)
drawing_area.set_double_buffered(False)
drawing_area.realize()

window = Gtk.Window()
window.add(drawing_area)

window.connect('delete-event', Gtk.main_quit)
window.show_all()

# Just for sure
drawing_area.get_window().resize(WIDTH, HEIGHT)

xid = drawing_area.get_window().get_xid()
print('APP_XID=%s' % xid)

Gtk.main()

最佳答案

现在这是通过“memfd_create”创建共享内存并渲染到该内存区域来完成的。双方通过“cairo_image_surface_create_for_data”将内存映射到可绘制对象中。这非常简单。

关于python - 通过其他应用程序在 GtkDrawingArea 中绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27432399/

相关文章:

Python文本文件数据提取

c - 扫描 radio 台

linux - 我需要从多个文件中删除一行

c++ - Qt应用程序启动崩溃

python - 撞车时如何清理?

python - 使用 Python 3 关闭/终止 Web 浏览器?

python-3.x - 合并数据框中的重复索引

python - Ubuntu python 3.7 到 3.8 更新替代方案

python - 如何防止 python 中的并行 for 循环访问同一文件夹两次?

python - 派乔内斯特安装