如何使用pyqt5浏览器实现打印功能



当我使用pyqt5浏览器访问特定的网页时,在这个页面上有一个打印按钮,但当我点击这个打印按钮时,浏览器没有响应。在Firefox浏览器中,我点击打印按钮后,会显示打印预览,我可以选择打印机。

根据这一点,QtWebEngine还无法进行打印预览,因此您只能直接打印。

要获取页面的打印请求,需要连接printRequested()信号。

class PrintTest(QtWidgets.QWidget):
def __init__(self, parent=None):
super(PrintTest, self).__init__(parent)
layout = QtWidgets.QHBoxLayout(self)
self.view = QtWebEngineWidgets.QWebEngineView()
layout.addWidget(self.view)
self.page = QtWebEngineWidgets.QWebEnginePage(self)
self.view.setPage(self.page)
self.page.printRequested.connect(self.printRequested)
# load a page that has a print request
self.view.load(QtCore.QUrl(
"https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_print"))
def printRequested(self):
defaultPrinter = QtPrintSupport.QPrinter(
QtPrintSupport.QPrinterInfo.defaultPrinter())
dialog = QtPrintSupport.QPrintDialog(defaultPrinter, self)
if dialog.exec():
# printer object has to be persistent
self._printer = dialog.printer()
self.page.print(self._printer, self.printResult)
def printResult(self, success):
if success:
QtWidgets.QMessageBox.information(self, 'Print completed', 
'Printing has been completed!', QtWidgets.QMessageBox.Ok)
else:
QtWidgets.QMessageBox.warning(self, 'Print failed', 
'Printing has failed!', QtWebEngineWidgets.QMessageBox.Ok)
self.printRequested()
del self._printer

最新更新