第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 PyQt5 中截取網(wǎng)頁的截圖

在 PyQt5 中截取網(wǎng)頁的截圖

小唯快跑啊 2021-12-09 10:30:22
我想使用 PyQt5 截取網(wǎng)頁的屏幕截圖。(一個完整的網(wǎng)頁,包括用戶除非向下滾動才能看到的內(nèi)容。)據(jù)說,可以使用 QtWebEngine 在 PyQt5 中做到這一點。你會怎么做呢?我特別不希望用戶看到瀏覽器窗口打開或呈現(xiàn)。我只想要一個 PNG 文件的屏幕截圖。
查看完整描述

2 回答

?
慕容3067478

TA貢獻1773條經(jīng)驗 獲得超3個贊

以下是 QtWebEngine(版本 5.12)的示例:


import sys


from PyQt5.QtWidgets import QApplication

from PyQt5.QtCore import Qt, QUrl, QTimer

from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineSettings



class Screenshot(QWebEngineView):


    def capture(self, url, output_file):

        self.output_file = output_file

        self.load(QUrl(url))

        self.loadFinished.connect(self.on_loaded)

        # Create hidden view without scrollbars

        self.setAttribute(Qt.WA_DontShowOnScreen)

        self.page().settings().setAttribute(

            QWebEngineSettings.ShowScrollBars, False)

        self.show()


    def on_loaded(self):

        size = self.page().contentsSize().toSize()

        self.resize(size)

        # Wait for resize

        QTimer.singleShot(1000, self.take_screenshot)


    def take_screenshot(self):

        self.grab().save(self.output_file, b'PNG')

        self.app.quit()



app = QApplication(sys.argv)

s = Screenshot()

s.app = app

s.capture('https://pypi.org/project/PyQt5/', 'webpage.png')

sys.exit(app.exec_())


查看完整回答
反對 回復 2021-12-09
?
Cats萌萌

TA貢獻1805條經(jīng)驗 獲得超9個贊

- 此代碼在:QT_VERSION_STR = 5.12.1 , PYQT_VERSION_STR = 5.12 中進行了測試


注意: QtWebKit 在 Qt 5.5 上游被棄用,并在 5.6 中被移除。


相反,它被替換為“QtWebEngineWidgets”。因此,您必須對代碼進行更改。


更多信息:http : //doc.qt.io/qt-5/qtwebenginewidgets-qtwebkitportingguide.html


from PyQt5.QtGui import QPainter, QImage

from PyQt5 import QtWebKitWidgets

from functools import partial




class Screenshot(QtWebKitWidgets.QWebView):

    def __init__(self):

        QtWebKitWidgets.QWebView.__init__(self)


    def capture(self, url, output_file):

        self.load(QUrl(url))

        self.loadFinished.connect(partial(self.onDone, output_file))


    def onDone(self,output_file):

        # set to webpage size

        frame = self.page().mainFrame()

        self.page().setViewportSize(frame.contentsSize())

        # render image

        image = QImage(self.page().viewportSize(), QImage.Format_ARGB32)

        painter = QPainter(image)

        frame.render(painter)

        painter.end()

        image.save(output_file)



s = Screenshot()

s.capture('https://pypi.org/project/PyQt5/', 'C:/Users/user/Desktop/web_page.png')

結(jié)果:

http://img1.sycdn.imooc.com//61b16a6f0001694f02901291.jpg

查看完整回答
反對 回復 2021-12-09
  • 2 回答
  • 0 關(guān)注
  • 385 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號