1

GdkPixBuf.pixbuf_get_from_window()在我的Linux Manjaro (Cinnamon)机器上不起作用。下面的代码(仅截图部分)在我的旧Manjaro安装中确实可以完美地截取屏幕截图,但最近我重新安装了,现在相同的代码不起作用。我什至在Linux Mint (Cinnamon)中尝试了相同的代码,但它在那里也不起作用。

当我使用 Visual Studio Code 运行/调试代码时,代码中没有出现异常,.xsession-errors中没有任何内容,journalctl日志中也没有任何内容。

所以我只能猜测我在旧机器上安装的新机器上缺少一些依赖项,但是如果没有错误消息,很难找出缺少的内容。当我从终端运行应用程序时,我没有得到任何输出。该应用程序工作正常,除了屏幕截图部分。

当然,我已经在我的虚拟环境中安装了PyGObjectPyCairo 。因此,我必须缺少另一个依赖项,有人知道缺少什么吗?

[编辑] 我不知道这是我的虚拟环境的问题(我需要的pip install东西)还是我的机器上缺少的东西(我需要的东西sudo pacman -S)。当我让它在我的旧机器上运行时,我真的刚刚了解了虚拟环境和 python(尽管仍然是一个新手),所以它可能因为我在全球范围内安装了一些东西而一直在运行。

from gi.repository import Gdk, GdkPixbuf

class ScreenShotHelper(object):
    def __init__(self):
        """Setup the screenshothelper class"""
        # Get root window (contains all monitors and windows)
        self.root_window = Gdk.get_default_root_window()

    def grab_and_scale(self, position, size, requested_size):
        """Grab a screenshot and scale it down to requested size"""
        # Get specific area from root window
        pb = Gdk.pixbuf_get_from_window(self.root_window,
                                        position.left,
                                        position.top,
                                        size.width,
                                        size.height)
        # Scale the image down to the size the user asked for
        pb = pb.scale_simple(requested_size.width,
                             requested_size.height,
                             GdkPixbuf.InterpType.NEAREST)

        return pb
4

0 回答 0