pyqt5的 QPrinter 使用模板

简介: 说明这个QPrinter 使用模板,提供了四种打印方式。一.调用 打印对话框二.调用 打印预览框三.直接打印四.打印到PDF【如下代码,完全复制,直接运行,即可使用】from PyQt5.

说明

这个QPrinter 使用模板,提供了四种打印方式。

一.调用 打印对话框
二.调用 打印预览框
三.直接打印
四.打印到PDF

【如下代码,完全复制,直接运行,即可使用】

from PyQt5.QtGui import QFont,QTextDocument,QTextCursor
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QSizePolicy, QAction,QDialog
from PyQt5.QtPrintSupport import QPrinter, QPrintDialog,QPrintPreviewDialog
import sys

################################################
#######打印文本---《心经》
################################################
the_text = '''
观自在菩萨,行深般若波罗蜜多时,照见五蕴皆空,度一切苦厄。
舍利子,色不异空,空不异色,色即是空,空即是色,受想行识亦复如是。
舍利子,是诸法空相,不生不灭,不垢不净,不增不减。
是故空中无色,无受想行识,无眼耳鼻舌身意,无色声香味触法,无眼界乃至无意识界,无无明亦无无明尽,乃至无老死,亦无老死尽,无苦集灭道,无智亦无得。
以无所得故,菩提萨埵,依般若波罗蜜多故,心无挂碍;无挂碍故,无有恐怖,远离颠倒梦想,究竟涅槃。
三世诸佛,依般若波罗蜜多故,得阿耨多罗三藐三菩提。
故知般若波罗蜜多,是大神咒,是大明咒,是无上咒,是无等等咒,能除一切苦,真实不虚。
故说般若波罗蜜多咒,即说咒曰:揭谛揭谛,波罗揭谛,波罗僧揭谛,菩提萨婆诃。
'''

################################################
#######创建主窗口
################################################
class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setWindowTitle(self.tr("打印功能"))

        # 创建文本框
        self.label = QLabel()
        self.label.setFont(QFont("Roman times",12,QFont.Bold))
        self.label.setText(the_text)
        self.setCentralWidget(self.label)

        # 创建菜单栏
        self.createMenus()



    def createMenus(self):
        # 创建动作一
        self.printAction1 = QAction(self.tr("打印无预留"), self)
        self.printAction1.triggered.connect(self.on_printAction1_triggered)

        # 创建动作二
        self.printAction2 = QAction(self.tr("打印有预留"), self)
        self.printAction2.triggered.connect(self.on_printAction2_triggered)

        # 创建动作三
        self.printAction3 = QAction(self.tr("直接打印"), self)
        self.printAction3.triggered.connect(self.on_printAction3_triggered)

        # 创建动作四
        self.printAction4 = QAction(self.tr("打印到PDF"), self)
        self.printAction4.triggered.connect(self.on_printAction4_triggered)


        # 创建菜单,添加动作
        self.printMenu = self.menuBar().addMenu(self.tr("打印"))
        self.printMenu.addAction(self.printAction1)
        self.printMenu.addAction(self.printAction2)
        self.printMenu.addAction(self.printAction3)
        self.printMenu.addAction(self.printAction4)



    # 动作一:打印,无预览
    def on_printAction1_triggered(self):
        printer = QPrinter()
        printDialog = QPrintDialog(printer, self)
        if printDialog.exec_() == QDialog.Accepted:
            self.handlePaintRequest(printer)


    # 动作二:打印,有预览
    def on_printAction2_triggered(self):
        dialog = QPrintPreviewDialog()
        dialog.paintRequested.connect(self.handlePaintRequest)
        dialog.exec_()


    # 动作三:直接打印
    def on_printAction3_triggered(self):
        printer = QPrinter()
        self.handlePaintRequest(printer)


    # 动作四:打印到pdf
    def on_printAction4_triggered(self):
        printer = QPrinter()
        printer.setOutputFormat(QPrinter.PdfFormat)
        printer.setOutputFileName("D:/pdf打印测试.pdf")
        self.handlePaintRequest(printer)


    ## 打印函数
    def handlePaintRequest(self, printer):
        document = QTextDocument()
        cursor = QTextCursor(document)
        cursor.insertText(self.label.text())
        document.print(printer)




################################################
#######程序入门
################################################
if __name__ == "__main__":
    app = QApplication(sys.argv)
    main = MainWindow()
    main.show()
    sys.exit(app.exec_())

本文如有帮助,敬请留言鼓励。
本文如有错误,敬请留言改进。

目录
相关文章
|
10月前
|
Python
净利润断层策略
净利润断层策略通过分析公司财报公布后股价的异常波动来选股。当财报超预期且股价跳空高开时,视为买入信号。本文介绍了使用Python和Akshare库实现该策略的具体步骤,包括安装库、获取数据、识别断层及筛选股票等。
|
jenkins 持续交付 Docker
一个python应用在CI/CD中的例子分享
一个python应用在CI/CD中的例子分享
454 10
|
JavaScript 前端开发 网络协议
抖音直播弹幕数据逆向:websocket和JS注入
抖音直播弹幕数据逆向:websocket和JS注入
1342 1
QT中的动画类(QPropertyAnimation)
QT中的动画类(QPropertyAnimation)
291 0
|
存储 数据可视化 数据挖掘
利用Matplotlib实现地图可视化
【4月更文挑战第17天】使用Matplotlib结合GeoPandas和Basemap在Python中实现地图可视化。首先安装Matplotlib、GeoPandas和Basemap库。读取GeoJSON或Shapefile格式的地理数据,然后使用Basemap创建地图底图,绘制海岸线、国家边界和大陆湖泊。将GeoDataFrame数据转换后叠加到地图上,自定义地图样式和添加图例。利用颜色映射展示与地理位置相关的数值数据,创建颜色条。此外,可通过Folium实现交互式地图。通过学习和实践,提升地图可视化的技能。
|
存储 SQL 数据库
django如何连接sqlite数据库?
django如何连接sqlite数据库?
611 0
|
Web App开发 前端开发 JavaScript
Flask 入门系列教程(一)
Flask 入门系列教程(一)
509 2
|
存储 前端开发 JavaScript
Flask 入门系列教程(三)
Flask 入门系列教程(三)
155 0
|
XML 存储 安全
CodeSign的签名机制
iOS如何保证App的安全
1053 1
|
机器学习/深度学习 存储 文字识别
图像数字识别、数字分割(OCR识别,毕业设计)
图像数字识别、数字分割(OCR识别,毕业设计)