Python 有没有办法在pyqt5或qt5中拍摄窗口的截图?
我怎样才能用这个来打开窗户?它只获得屏幕的一部分:Python 有没有办法在pyqt5或qt5中拍摄窗口的截图?,python,pyqt,qt5,pyqt5,Python,Pyqt,Qt5,Pyqt5,我怎样才能用这个来打开窗户?它只获得屏幕的一部分: #!/usr/bin/env python3 from PyQt5.QtGui import * from PyQt5.QtWidgets import QApplication, QWidget import sys app = QApplication(sys.argv) screen = QApplication.primaryScreen() widget = QWidget() screenshot = screen.grabWi
#!/usr/bin/env python3
from PyQt5.QtGui import *
from PyQt5.QtWidgets import QApplication, QWidget
import sys
app = QApplication(sys.argv)
screen = QApplication.primaryScreen()
widget = QWidget()
screenshot = screen.grabWindow(0, 0, 0, 100, 100)
screenshot.save('shot', 'jpg')
我需要一个crossplataform方法。参考:
你说你需要一个窗口的截图,因此
screenshot = screen.grabWindow( widget.winId() )
在这里不是合适的调用,因为它捕获整个屏幕,并根据最后4个参数进行裁剪。(100个参数是宽度和高度)
捕获小部件窗口。然而,您在这次调用中没有得到预期结果的原因可能是您没有创建一个可靠的小部件和/或小部件没有显示。尝试以下示例,在单击按钮之前,确保应用程序位于主屏幕上
screenshot = screen.grabWindow( widget.winId() )
我已经在Windows上对此进行了测试。我尝试了widget.winId(),但它没有获得程序(窗口)而是获得了相同的主屏幕,但裁剪了(linux上的im)您使用的确切代码。在没有int参数的情况下调用screenshot=screen.grabWindow(widget.winId())吗?我想问题可能在于QWidget()不是一个固定的窗口。让我查一下。。。
screenshot = screen.grabWindow( widget.winId() )
from PyQt5 import QtWidgets
import sys
app = QtWidgets.QApplication(sys.argv)
w = QtWidgets.QWidget()
grab_btn=QtWidgets.QPushButton('Grab Screen')
def click_handler():
screen = QtWidgets.QApplication.primaryScreen()
screenshot = screen.grabWindow( w.winId() )
screenshot.save('shot.jpg', 'jpg')
w.close()
grab_btn.clicked.connect(click_handler)
layout = QtWidgets.QVBoxLayout()
layout.addWidget(grab_btn)
w.setLayout(layout)
w.show()
sys.exit(app.exec_())