x详情参考Qt官网

参考:https://blog.csdn.net/jia666666/article/details/81590005

https://www.jianshu.com/p/bb8e9b3ad9f7

https://www.jianshu.com/p/8298c2474630


流程:实例化Qprinter --》设置打印弹出QprintDialog --》调用文本的打印方法.print()

例子:打印图像

#coding=utf-8
import sys
from PyQt5.QtWidgets import QWidget,QLabel,QAction,QCheckBox,QApplication,QMainWindow,QGridLayout
from PyQt5.QtCore import Qt,QRect
from PyQt5.QtGui import QPainter,QPixmap,QImage
#打印支持模块,Qprint打印模块,QprintDialog调出打印窗口,QpagesteupDialog调出打印设置窗口
from PyQt5.QtPrintSupport import QPrinter,QPrintDialog,QPageSteupDialogclass SignalDemo(QMainWindow):def __init__(self):super().__init__()self.initGUI()def initGUI(self):self.setGeometry(300,300,300,200)widget=QWidget()grid=QGridLayout()widget.setLayout(grid)self.setCentralWidget(widget)#生成menubar栏self.createBar()#label#加载图片self.img=QImage('./a.ico')self.label=QLabel()grid.addWidget(self.label,0,0)self.label.setPixmap(QPixmap.fromImage(self.img))self.show()def createBar(self):  #生成menubarfile=self.menuBar().addMenu(self.tr('File'))da=QAction('打印',self)da.setShortcut('Ctrl+p')file.addAction(da)da.triggered.connect(self.showPrint) #信号槽def showPrint(self):#实例化打印图像对象printer=QPrinter()#打印窗口弹出printdialog=QPrintDialog(printer,self)#绘制if printdialog.exec_():#调用绘图painter=QPainter(printer)#实例化视图窗口rect=painter.viewport()#获取图片的尺寸size=self.img.size()#Qt.KeepAspectRatio  保持纵横比size.scale(rect.size(),Qt.KeepAspectRatio)#设置窗口的大小为图片的磁村,并在窗口内绘制painter.setViewport(rect.x(),rect.y(),size.width(),size.height())painter.setWindow(self.img.rect)painter.drawImage(0,0,self.img)if __name__=='__main__':app=QApplication(sys.argv)demo=SignalDemo()sys.exit(app.exec_())

例二:

import sys
from PyQt5.QtWidgets import QApplication,QLabel,QMainWindow,QFormLayout,QWidget,QAction
from PyQt5.QtPrintSupport import QPrinter
from PyQt5.QtGui import QTextCursor,QTextDocument,QImage,QPixmapclass printDemo(QMainWindow):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle('打印demo')self.setGeometry(300,300,400,300)widget=QWidget()self.setCentralWidget(widget)layout=QFormLayout()widget.setLayout(layout)self.img=QImage('./a.ico')label=QLabel()label.setPixmap(QPixmap.fromImage(self.img))layout.addRow('图片打印',label)self.text='tststtas飒飒嘎嘎嘎啥归属感'label=QLabel()label.setText(self.tr(self.text))layout.addRow('文章打印',label)file=self.menuBar().addMenu('File')action1=QAction('转为pdf',self)action1.setShortcut('Ctrl+p')file.addAction(action1)action1.triggered.connect(self.printShow)def printShow(self):printer=QPrinter()#设置打印输出的形式:可以设置为输出pdf格式printer.setOutputFormat(QPrinter.PdfFormat)#设置输出的路径为当前printer.setOutputFileName('test.pdf')#实例化一个富文本document=QTextDocument()#实例化一个文本指针并指向document的光标cursor=QTextCursor(document)#富文本添加内容cursor.insertImage(self.img)cursor.insertText(self.text)#调用print()方法 参数为当前实例化的打印函数document.print(printer)if __name__=='__main__':app=QApplication(sys.argv)demo=printDemo()demo.show()sys.exit(app.exec())

例三:1,调用打印对话框,2,调用打印预览框3,直接打印,4打印到Pdf

import sys
from PyQt5.QtWidgets import QApplication,QLabel,QMainWindow,QFormLayout,QDialog,QWidget,QAction
from PyQt5.QtPrintSupport import QPrinter,QPrintDialog,QPrintPreviewDialog
from PyQt5.QtGui import QTextCursor,QTextDocument,QImage,QPixmap#需要打印的文字
text='11111111111wwwwwwwwwww呜呜呜呜呜呜呜呜无无无无'  class printDemo(QMainWindow):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle('打印demo')self.setGeometry(300,300,300,200)self.createBar()#设置menuBardef createBar(self):bar=self.menuBar()printmenu=bar.addMenu('打印')#直接打印不显示printAction1=QAction('直接打印不显示',self)printmenu.addAction(printAction1)printAction1.triggered.connect(self.no_showPrinter)#打印弹出设置对话框printAction2=QAction('打印弹出设置',self)printmenu.addAction(printAction2)printAction2.triggered.connect(self.show_steupPrinter)#打印弹出预览对话框printAction3=QAction('打印弹出预览',self)printmenu.addAction(printAction3)printAction3.triggered.connect(self.show_previewPrinter)#打印输出pdfprintAction4=QAction('打印输出pdf',self)printmenu.addAction(printAction4)printAction4.triggered.connect(self.show_pdfPrinter)#打印不显示def no_showPrinter(self):printer=QPrinter()self.handlePaintRequest(printer)#打印显示设置def show_steupPrinter(self):printer=QPrinter()printDialog=QPrintDialog(printer)if printDialog.exec_()==QDialog.Accepted:self.handlePaintRequest(printer)#打印预览
#  ------------------这个比较特殊-----------------------------------def show_previewPrinter(self):dialog=QPrintPreviewDialog()dialog.paintRequested.connect(self.handlePaintRequest)dialog.exec_()
-
#输出pdf格式不打印def show_pdfPrinter(self):printer=QPrinter()printDialog=QPrintDialog(printer)printer.setOutputFormat(QPrinter.PdfFormat)printer.setOutputFileName('a.pdf')self.handlePaintRequest(printer)#打印函数def handlePaintRequest(self,printer):#流程将文本或图片,其他写入QTextdocument中,然后调用print函数document=QTextDocument()cursor=QTextCursor(document)cursor.insertText(text)document.print(printer)if __name__=='__main__':app=QApplication(sys.argv)demo=printDemo()demo.show()sys.exit(app.exec())

PyQt5学习(7):打印Qprinter相关推荐

  1. PyQt5学习—1介绍

    "PyQt5学习"系列若不做明显提示,默认翻译自zetcode. 如果本系列博文侵犯了您的合法权益,请在博客中留下评论或联系:jay5559420@163.com.我会及时修改和删 ...

  2. PyQt5学习笔记——一文详解QObject

    QObject详解笔记1 一.简介 QObject是所有Qt对象的基类 二.功能作用 2.1 对象名称.属性 2.1.1 API setObjectName("唯一名称") 给QT ...

  3. pyqt5 商店小票打印的实现模板

    说明 最近在用pyqt5做商店小票打印,用的是得力DL-581PW(NEW)热敏小票打印机. 商店小票打印,属于escpos打印. 在网上找了很多实现方法,看了很多相关文章,经历了很多困难,最后终于实 ...

  4. PyQT5学习之旅 1 如何自定义控件,入门做一个上位电脑串口调试软件,全部开源。(附带源码)

    文章目录 一.前言 二.开发的必备工具 2.1 PyCharm 如何集成 QT Designer UI代码转可视化 可视转化UI代码 打包成 exe 软件: 2.2.引进自定义控件 移除此控件为自定义 ...

  5. PyQt5 学习笔记——(二) PushButton

    言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容. 提示:以下是本篇文章正文内容,下 ...

  6. 【工业控制】学习喷墨打印技术 怎么能不知道波形

    00. 目录 文章目录 00. 目录 01.概述 02. 喷头构造 03. 脉冲时间 04. 共振情况 05. 多重脉冲 06. 参考资料 01.概述 转自微信公众号:柔性电子服务平台 作者:glas ...

  7. Linux学习之打印进程树

    前言 继续Linux的学习,操作系统学到了Linux系统下的进程结构,布置了一个作业是打印进程树,来加深一下对Linux进程的理解. 虚拟主机 主机:联想Y7000P:64位windows10:CPU ...

  8. PyQt5学习笔记06----Qt Designer自定义信号emit及传参

    from PyQt5 import QtWidgets,QtCore from untitled import Ui_Form import  time class MyWindow(QtWidget ...

  9. PyQt5学习笔记02----初探Qt Designer 设计师

    网上很多教程都是纯代码,对于新手看起来就很头疼,pyqt为我们提供了Qt designer来设计窗口界面,用起来也非常方便.对于新手来说应该善用它,虽然做出来的界面不那么华丽,但至少可以做出个像样的窗 ...

最新文章

  1. Oracle数据库链Database links
  2. 适合自己的vim配置文件
  3. 新建文件夹html文件,JS实现新建文件夹功能
  4. 提单丢失了,怎么办?
  5. Java学习笔记53(网络编程:TCP协议案例)
  6. 【转载】通过金矿模型介绍动态规划 (动态规划入门)
  7. android xml左边,Android XML – 如何将项目对齐到最左侧,中间和最右侧
  8. 使用百度链的智能合约来落地公司业务场景
  9. C#如何与OPC连接
  10. UVA10751 Chessboard【数学水题】
  11. matlab 数字波束合成,dbf数字波束合成
  12. Ubuntu Android开发环境配置
  13. html网页实现查询功能实现,CSS与媒体查询实现网页导航功能(附代码)
  14. 我的Python心路历程 第十期 (10.5 股票实战之数据可视化曲线)
  15. Android Service保活方法总结
  16. 眼界、激情、感恩——一个GIS专业学生大学四年总结,软件大赛、考研感想
  17. estore网上书城项目分享
  18. Ping总是丢包的原因,故障排除思路,解决方法
  19. Hutool如何给Excel按行设置背景颜色
  20. 汉诺塔问题的时间复杂度

热门文章

  1. 产业洞察 | 频繁入股网络安全企业,国有资本这是要搞大事情
  2. 油气用交流电动机的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  3. zxing生成边框自定义宽度二维码,
  4. 【笔记整理】通信原理第六章复习——数字带通传输系统(上)(二进制数字调制)
  5. 你如何使用Python制作网站?
  6. [1184]FinalShell下载安装
  7. C# 合并PDF文件
  8. iOS使用OCLint做静态代码分析
  9. PC端各浏览器布局兼容问题【Chrome、Firefox、IE】——长期更新
  10. 设计模式学习笔记--桥梁(Bridge)模式