linux窗口应用程序,如何在linux下用Python捕捉gtk应用程序窗口的映像?

在“保存图像”方法中,将当前窗口保存为png文件。在

您还可以在保存之前将cairo转换应用于cairo_上下文。在from gi.repository import Gtk, Gdk

import cairo

import sys

class MyWindow(Gtk.ApplicationWindow):

# constructor for a Gtk.ApplicationWindow

def __init__(self, app, image_file="/tmp/window.png"):

Gtk.Window.__init__(self, title="Welcome to GNOME", application=app)

self.set_default_size(200, 100)

self.image_file = image_file

vbox = Gtk.VBox()

self.add(vbox)

# create a label

label = Gtk.Label()

# set the text of the label

label.set_text("Hello GNOME!")

# add the label to the window

vbox.pack_start(label, True, True, 0)

button = Gtk.Button("ScreenshotMe!")

button.connect("clicked", self.on_save_image)

vbox.pack_start(button, False, False, 0)

def on_save_image(self, button):

"""

Get the surface of the current window and save it as a png

"""

window = self.get_window()

width, height = window.get_width(), window.get_height()

surface = Gdk.Window.create_similar_surface(window,

cairo.CONTENT_COLOR,

width, height)

cairo_context = cairo.Context(surface)

Gdk.cairo_set_source_window(cairo_context, window, 0, 0)

cairo_context.paint()

surface.write_to_png(self.image_file)

class MyApplication(Gtk.Application):

def __init__(self):

Gtk.Application.__init__(self)

def do_activate(self):

win = MyWindow(self)

win.show_all()

def do_startup(self):

Gtk.Application.do_startup(self)

app = MyApplication()

exit_status = app.run(sys.argv)

sys.exit(exit_status)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值