'的QPixmap'没有属性' grabWindow'

时间:2015-03-25 16:02:55

标签: python pyqt5

我正在尝试将我的代码从PyQt4转换为PyQt5,但我收到了错误。

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'

3 个答案:

答案 0 :(得分:3)

您应该使用QScreen::grabWindow()代替。 QPixmap::grabWindow() is deprecated in Qt 5.0 because

  

可能存在平台插件,其中窗口系统标识符(WId)是屏幕本地的。

答案 1 :(得分:1)

grabWindow方法现已在QScreen类中提供。

您需要创建QScreen对象,并使用ex初始化它。 QtGuiApplication.primaryScreen(),然后抓住屏幕

screen.grabWindow(QApplication.desktop().winId())

答案 2 :(得分:0)

PyQt5

的完整示例
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtGui import QPixmap, QScreen
from datetime import datetime

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