asd
This commit is contained in:
@ -0,0 +1,54 @@
|
||||
import io
|
||||
import logging
|
||||
|
||||
from PIL import Image
|
||||
|
||||
from pyscreenshot.plugins.backend import CBackend
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class PySide2BugError(Exception):
|
||||
pass
|
||||
|
||||
|
||||
app = None
|
||||
|
||||
|
||||
class PySide2GrabWindow(CBackend):
|
||||
name = "pyside2"
|
||||
|
||||
def grab_to_buffer(self, buff, file_type="png"):
|
||||
from PySide2 import QtCore, QtGui, QtWidgets # type: ignore
|
||||
|
||||
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):
|
||||
strio = io.BytesIO()
|
||||
self.grab_to_buffer(strio)
|
||||
strio.seek(0)
|
||||
im = Image.open(strio)
|
||||
if bbox:
|
||||
im = im.crop(bbox)
|
||||
return im
|
||||
|
||||
def backend_version(self):
|
||||
import PySide2
|
||||
|
||||
return PySide2.__version__
|
||||
Reference in New Issue
Block a user