Python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例
简介
QPrinter 是 PyQt5 里面的打印控件,用于打印预览窗口,支持 PDF 和图片的输出,还可以设置打印机的各种属性。在本教程中,将详细介绍 QPrinter 的各种基本用法,并提供两个实例说明。
前置条件
在开始之前确保你已经已经安装好了 PyQt5 库,并在 Python 环境下进行编写。
QPrinter 基本用法
QPrinter 主要用于进行打印相关的设置,然后把文档传递给 QPrintDialog 进行打印。下面将详细介绍 QPrinter 的基本用法。
打印页面设置
使用 QPageSetupDialog 可以打开打印机页面设置窗口,在这个窗口里面,你可以设置纸张大小、边距大小以及打印机的方向等参数。
from PyQt5.QtPrintSupport import QPrinter, QPageSetupDialog
from PyQt5.QtWidgets import QApplication, QFileDialog
app = QApplication([])
printer = QPrinter()
file_path, _ = QFileDialog.getSaveFileName()
if file_path:
printer.setOutputFormat(QPrinter.PdfFormat)
painter = QPainter()
painter.begin(printer)
dialog = QPageSetupDialog(printer)
dialog.exec_()
painter.end()
打印机设置
可以使用 QPrintDialog 打印对话框来自定义打印机的设置,比如页面方向、颜色等等。
from PyQt5.QtGui import QPainter
from PyQt5.QtPrintSupport import QPrinter, QPrintDialog
from PyQt5.QtWidgets import QApplication, QTextEdit
app = QApplication([])
printer = QPrinter()
printer.setOutputFormat(QPrinter.PdfFormat)
dialog = QPrintDialog(printer)
if dialog.exec_() == QPrintDialog.Accepted:
editor = QTextEdit()
editor.document().print_(printer)
实例说明
实例一
本实例将展示如何通过 QPrinter 和 QPainter 对应用程序生成 PDF 文件。
from PyQt5.QtGui import QPainter
from PyQt5.QtCore import QFileInfo
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QFileDialog
from PyQt5.QtPrintSupport import QPrinter
class Example(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
self.print_button = QPushButton('Print', self)
self.print_button.move(250, 50)
self.print_button.clicked.connect(self.print_content)
self.setWindowTitle('QPrinter Example')
self.setGeometry(500, 300, 500, 400)
self.show()
def print_content(self):
printer = QPrinter()
printer.setOutputFileName("output.pdf")
printer.setOutputFormat(QPrinter.PdfFormat)
painter = QPainter(printer)
painter.drawText(500, 500, 'Hello, PyQt5!')
painter.end()
file_info = QFileInfo("output.pdf")
QFileDialog.getSaveFileName(self, "Save PDF File As", file_info.absoluteFilePath(), "PDF Files (*.pdf)")
if __name__ == '__main__':
app = QApplication([])
ex = Example()
app.exec_()
该实例定义了一个窗口和一个按钮,当用户点击该按钮时,将会在窗口中显示 "Hello, PyQt5!" 并保存为一个 PDF 文件。
实例二
本实例将展示如何通过 QPrinter 和 QPainter 在打印机上打印数据。
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPainter, QColor, QFont, QPen
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QPrintDialog
from PyQt5.QtPrintSupport import QPrinter
class Example(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
self.print_button = QPushButton('Print', self)
self.print_button.move(250, 50)
self.print_button.clicked.connect(self.print_content)
self.setWindowTitle('QPrinter Example')
self.setGeometry(500, 300, 500, 400)
self.show()
def print_content(self):
printer = QPrinter()
printer.setOutputFormat(QPrinter.NativeFormat)
dialog = QPrintDialog(printer)
if dialog.exec_() == QPrintDialog.Accepted:
painter = QPainter(printer)
painter.setPen(QPen(Qt.black, 5, Qt.SolidLine))
font = QFont()
font.setFamily('Arial')
font.setPointSize(20)
painter.setFont(font)
painter.drawText(100, 100, 'Hello, PyQt5!')
painter.drawLine(100, 150, 400, 150)
painter.end()
if __name__ == '__main__':
app = QApplication([])
ex = Example()
app.exec_()
该实例定义了一个窗口和一个按钮,当用户点击该按钮时,会弹出一个对话框,让用户选择打印机,然后在打印机上打印一条消息 "Hello, PyQt5!" 以及一条直线。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例 - Python技术站