Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

'QPixmap' has no attribute 'grabWindow'

Tags:

python

pyqt5

I am trying convert my code from PyQt4 to PyQt5 but I am getting errors.

import sys
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QApplication
from datetime import datetime

date = datetime.now()
filename = date.strftime('%Y-%m-%d_%H-%M-%S.jpg')
app = QApplication(sys.argv)
QPixmap.grabWindow(QApplication.desktop().winId()).save(filename, 'jpg')


Traceback (most recent call last):
  File "C:\Python34\Projects\name.py", line 9, in <module>
    QPixmap.grabWindow(QApplication.desktop().winId()).save(filename, 'jpg')
AttributeError: type object 'QPixmap' has no attribute 'grabWindow'
like image 926
Arthur Yakovlev Avatar asked Dec 11 '25 01:12

Arthur Yakovlev


2 Answers

You should use QScreen::grabWindow() instead. QPixmap::grabWindow() is deprecated in Qt 5.0 because:

there might be platform plugins in which window system identifiers (WId) are local to a screen.

like image 158
Konrad Talik Avatar answered Dec 12 '25 13:12

Konrad Talik


grabWindow method is now available in QScreen class.

You need to create QScreen object, initialize it with ex. QtGuiApplication.primaryScreen() and then grab the screen

screen.grabWindow(QApplication.desktop().winId())
like image 29
prajmus Avatar answered Dec 12 '25 13:12

prajmus



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!