QWebEnginePage.print
时间: 2024-09-19 13:00:18 浏览: 71
在PyQt5的`QWebEnginePage`类中,`print()`方法允许你从`QWebEngineView`或`QWebEnginePage`对象触发网页的打印操作。这是通过JavaScript API来实现的,因为浏览器内核负责实际的打印。
当你调用`page.print()`时,实际上是向页面发送了一个JavaScript命令,该命令告诉浏览器开始打印当前加载的内容。例如,在`QWebEngineView`中,你可以这样做:
```python
from PyQt5.QtWebEngineWidgets import QWebEnginePage
def trigger_print(view: QWebEngineView):
page = view.page() # 获取当前视图对应的QWebEnginePage
print_command = "window.print()" # 打印指令
page.runJavaScript(print_command) # 通过JavaScript执行打印操作
# 使用场景:
trigger_print(your_web_engine_view)
```
需要注意的是,`runJavaScript()`方法需要确保用户有足够的权限进行此操作,否则可能会失败。此外,为了更好的用户体验,通常会在触发打印之前添加一些预览步骤,让用户确认他们确实想要打印的内容。
相关问题
QWebEnginePage 的printToPdf
QWebEnginePage的printToPdf()方法是用于将网页内容导出为PDF格式的功能。[1]这个方法需要等待网页加载和渲染完成后才能导出PDF文件。至于PDF生成引擎的具体位置,QWebEngine使用的是Chromium引擎或者自己的引擎[2]。如果你使用QPdfWriter和QTextDocument::print(QPagedPaintDevice *printer)方法,你将使用与QWebEngine不同的PDF引擎[2]。在Qt中,你还可以使用QPdfWriter和QTextDocument::print()方法来实现HTML到PDF的转换[3]。所以,你可以根据你的需求选择适合的方法来实现HTML到PDF的转换。
options = webdriver.ChromeOptions() options.add_argument('--ignore-certificate-errors') options.add_experimental_option('excludeSwitches', ['enable-automation']) options.add_argument("--disable-blink-features=AutomationControlled") options.add_argument('--disable-gpu') # 谷歌文档提到需要加上这个属性来规避bug options.add_argument('blink-settings=imagesEnabled=false') # 不加载图片, 提升速度 # options.add_argument('--headless') # 浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败 options.binary_location = './chrome-win/chrome.exe' driver_path = Service("chromedriver.exe") driver = webdriver.Chrome(service=driver_path, options=options) # 打开网站 print('正在登录!') driver.get('http://www.weather.com.cn/jiangsu/index.shtml'),from PySide2.QtCore import * from PySide2.QtWidgets import * from PySide2.QtWebEngineWidgets import * class TabWidget(QTabWidget): def __init__(self, *args, **kwargs): QTabWidget.__init__(self, *args, **kwargs) url = QUrl("https://www.163.com") view = HtmlView(self) view.load(url) ix = self.addTab(view, "加载中 ...") self.resize(800, 600) class HtmlView(QWebEngineView): def __init__(self, *args, **kwargs): QWebEngineView.__init__(self, *args, **kwargs) self.tab = self.parent() def createWindow(self, windowType): if windowType == QWebEnginePage.WebBrowserTab: webView = HtmlView(self.tab) ix = self.tab.addTab(webView, "加载中 ...") self.tab.setCurrentIndex(ix) return webView return QWebEngineView.createWindow(self, windowType) if __name__ == "__main__": import sys app = QApplication(sys.argv) main = TabWidget() main.show() sys.exit(app.exec_()),把这两段代码整合到一起。
把这两段代码整合到一起可能会有一些问题,因为它们是两个不同的功能:一个是使用 Selenium 自动化测试工具打开天气网站,另一个是使用 PySide2.QtWebEngineWidgets 模块创建一个带有选项卡的窗口并在其中加载网页。如果你想在 PySide2 应用程序中使用 Selenium,你需要使用 PySide2.QtCore.QProcess 模块来启动一个独立的进程来运行 Selenium 脚本,并使用 PySide2.QtCore.QProcess.readyReadStandardOutput() 来读取输出。以下是一个简单的示例代码,可以帮助你开始使用 Selenium 在 PySide2 中自动化测试网页:
```python
from PySide2.QtCore import *
from PySide2.QtWidgets import *
from PySide2.QtWebEngineWidgets import *
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
class TabWidget(QTabWidget):
def __init__(self, *args, **kwargs):
QTabWidget.__init__(self, *args, **kwargs)
self.setup_browser()
self.load_pages()
def setup_browser(self):
options = Options()
options.add_argument('--ignore-certificate-errors')
options.add_experimental_option('excludeSwitches', ['enable-automation'])
options.add_argument("--disable-blink-features=AutomationControlled")
options.add_argument('--disable-gpu')
options.add_argument('blink-settings=imagesEnabled=false')
options.binary_location = './chrome-win/chrome.exe'
driver_path = Service("chromedriver.exe")
self.driver = webdriver.Chrome(service=driver_path, options=options)
def load_pages(self):
self.load_page("http://www.weather.com.cn/jiangsu/index.shtml", "天气网站")
self.load_page("https://www.163.com", "网易新闻")
def load_page(self, url, title):
view = HtmlView(self)
view.load(QUrl(url))
ix = self.addTab(view, title)
self.setCurrentIndex(ix)
class HtmlView(QWebEngineView):
def __init__(self, *args, **kwargs):
QWebEngineView.__init__(self, *args, **kwargs)
self.tab = self.parent()
def createWindow(self, windowType):
if windowType == QWebEnginePage.WebBrowserTab:
webView = HtmlView(self.tab)
ix = self.tab.addTab(webView, "加载中 ...")
self.tab.setCurrentIndex(ix)
return webView
return QWebEngineView.createWindow(self, windowType)
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
main = TabWidget()
main.show()
sys.exit(app.exec_())
```
这个例子中,我们在 TabWidget 类的构造函数中调用了 setup_browser() 和 load_pages() 方法。在 setup_browser() 方法中,我们使用 Selenium 的 Options 类来设置 Chrome 浏览器的选项,并创建一个 ChromeDriver 对象。在 load_pages() 方法中,我们调用 load_page() 方法来加载每个网页。在 load_page() 方法中,我们创建一个 HtmlView 对象并调用它的 load() 方法来加载网页。我们还将 HtmlView 对象添加到 TabWidget 中,并将选项卡的标题设置为网页的标题。
阅读全文