def grab_to_buffer(self, buff, file_type="png"): # PY2 error: # TypeError: 'PySide2.QtGui.QScreen.grabWindow' called with wrong argument types: # PySide2.QtGui.QScreen.grabWindow(int) # Supported signatures: # PySide2.QtGui.QScreen.grabWindow(WId, int = 0, int = 0, int = -1, int = -1) # https://stackoverflow.com/questions/59118938/type-error-when-calling-qscreen-grabwindow if py2(): raise PySide2BugError() from PySide2 import QtGui from PySide2 import QtCore from PySide2 import QtWidgets QApplication = QtWidgets.QApplication QBuffer = QtCore.QBuffer QIODevice = QtCore.QIODevice QScreen = QtGui.QScreen # QPixmap = self.PySide2.QtGui.QPixmap global app if not app: app = QApplication([]) qbuffer = QBuffer() qbuffer.open(QIODevice.ReadWrite) QScreen.grabWindow(QApplication.primaryScreen(), QApplication.desktop().winId()).save( qbuffer, file_type) # https://stackoverflow.com/questions/52291585/pyside2-typeerror-bytes-object-cannot-be-interpreted-as-an-integer buff.write(qbuffer.data().data()) qbuffer.close()
def grab(self, bbox=None): # no pygtk for py3 if not py2(): raise GtkError() im = read_func_img(self._grab_to_file, bbox) return im
def grab_to_buffer(self, buff, file_type="png"): if py2(): raise PySide2BugError() import PySide2 from PySide2 import QtGui from PySide2 import QtCore from PySide2 import QtWidgets QApplication = QtWidgets.QApplication QBuffer = QtCore.QBuffer QIODevice = QtCore.QIODevice QScreen = QtGui.QScreen # QPixmap = self.PySide2.QtGui.QPixmap global app if not app: app = QApplication([]) qbuffer = QBuffer() qbuffer.open(QIODevice.ReadWrite) QScreen.grabWindow(QApplication.primaryScreen(), QApplication.desktop().winId()).save( qbuffer, file_type) # https://stackoverflow.com/questions/52291585/pyside2-typeerror-bytes-object-cannot-be-interpreted-as-an-integer buff.write(qbuffer.data().data()) qbuffer.close()
def grab(self, bbox=None): if py2(): raise MssError() if py3(): if py_minor() < 5: raise MssError() import mss # atexit.register(sct.close()) global sct if not sct: sct = mss.mss() # with self.mss.mss() as sct: if bbox: monitor = bbox else: monitor = sct.monitors[0] sct_img = sct.grab(monitor) im = Image.frombytes("RGB", sct_img.size, sct_img.bgra, "raw", "BGRX") # The same, but less efficient: # im = Image.frombytes('RGB', sct_img.size, sct_img.rgb) return im
def check_import(module): found = False # try: # __import__(module) # ok = True # except ImportError: # pass if py2(): import imp try: imp.find_module(module) found = True except ImportError: found = False else: import importlib spam_spec = importlib.util.find_spec(module) found = spam_spec is not None return found
import tempfile from pyscreenshot.util import py2 if py2(): from pyscreenshot import tempdir27 TemporaryDirectory = tempdir27.TemporaryDirectory27 else: TemporaryDirectory = tempfile.TemporaryDirectory
from pyscreenshot.util import py2 from bt import backend_to_check, gnome, kde # no jeepney for py2 if gnome() and not py2(): def test_gnome_dbus(): assert not kde() backend_to_check("gnome_dbus")
from pyscreenshot.util import platform_is_osx, py2 from bt import backend_to_check, check_import # qt color problem on osx if not platform_is_osx(): if not py2() and check_import("PySide2"): def test_pyside2(): backend_to_check("pyside2")
from pyscreenshot.util import py2 from bt import backend_to_check, check_import # no pygtk for py3 if py2() and check_import("gtk"): def test_pygtk(): backend_to_check("pygtk")
from pyscreenshot.util import py2 from bt import backend_to_check, gnome, kde # no jeepney for py2 if kde() and not py2(): def test_kwin_dbus(): assert not gnome() backend_to_check("kwin_dbus")
except ImportError: display = None # https://github.com/python-xlib/python-xlib/blob/master/examples/xrandr.py#L44 def missing_RANDR(): if platform_is_osx(): return False if not display: return False disp = display.Display() return not disp.has_extension("RANDR") ok = False if not py2() and check_import("mss"): if platform_is_osx() and not use_x_display(): ok = True if platform_is_linux() and use_x_display(): ok = True if platform_is_win(): ok = True if ok: def test_mss(): if missing_RANDR(): try: backend_to_check("mss") except FailedBackendError: pass