PyQt5学习(7):打印Qprinter
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相关推荐
- PyQt5学习—1介绍
"PyQt5学习"系列若不做明显提示,默认翻译自zetcode. 如果本系列博文侵犯了您的合法权益,请在博客中留下评论或联系:jay5559420@163.com.我会及时修改和删 ...
- PyQt5学习笔记——一文详解QObject
QObject详解笔记1 一.简介 QObject是所有Qt对象的基类 二.功能作用 2.1 对象名称.属性 2.1.1 API setObjectName("唯一名称") 给QT ...
- pyqt5 商店小票打印的实现模板
说明 最近在用pyqt5做商店小票打印,用的是得力DL-581PW(NEW)热敏小票打印机. 商店小票打印,属于escpos打印. 在网上找了很多实现方法,看了很多相关文章,经历了很多困难,最后终于实 ...
- PyQT5学习之旅 1 如何自定义控件,入门做一个上位电脑串口调试软件,全部开源。(附带源码)
文章目录 一.前言 二.开发的必备工具 2.1 PyCharm 如何集成 QT Designer UI代码转可视化 可视转化UI代码 打包成 exe 软件: 2.2.引进自定义控件 移除此控件为自定义 ...
- PyQt5 学习笔记——(二) PushButton
言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容. 提示:以下是本篇文章正文内容,下 ...
- 【工业控制】学习喷墨打印技术 怎么能不知道波形
00. 目录 文章目录 00. 目录 01.概述 02. 喷头构造 03. 脉冲时间 04. 共振情况 05. 多重脉冲 06. 参考资料 01.概述 转自微信公众号:柔性电子服务平台 作者:glas ...
- Linux学习之打印进程树
前言 继续Linux的学习,操作系统学到了Linux系统下的进程结构,布置了一个作业是打印进程树,来加深一下对Linux进程的理解. 虚拟主机 主机:联想Y7000P:64位windows10:CPU ...
- PyQt5学习笔记06----Qt Designer自定义信号emit及传参
from PyQt5 import QtWidgets,QtCore from untitled import Ui_Form import time class MyWindow(QtWidget ...
- PyQt5学习笔记02----初探Qt Designer 设计师
网上很多教程都是纯代码,对于新手看起来就很头疼,pyqt为我们提供了Qt designer来设计窗口界面,用起来也非常方便.对于新手来说应该善用它,虽然做出来的界面不那么华丽,但至少可以做出个像样的窗 ...
最新文章
- Oracle数据库链Database links
- 适合自己的vim配置文件
- 新建文件夹html文件,JS实现新建文件夹功能
- 提单丢失了,怎么办?
- Java学习笔记53(网络编程:TCP协议案例)
- 【转载】通过金矿模型介绍动态规划 (动态规划入门)
- android xml左边,Android XML – 如何将项目对齐到最左侧,中间和最右侧
- 使用百度链的智能合约来落地公司业务场景
- C#如何与OPC连接
- UVA10751 Chessboard【数学水题】
- matlab 数字波束合成,dbf数字波束合成
- Ubuntu Android开发环境配置
- html网页实现查询功能实现,CSS与媒体查询实现网页导航功能(附代码)
- 我的Python心路历程 第十期 (10.5 股票实战之数据可视化曲线)
- Android Service保活方法总结
- 眼界、激情、感恩——一个GIS专业学生大学四年总结,软件大赛、考研感想
- estore网上书城项目分享
- Ping总是丢包的原因,故障排除思路,解决方法
- Hutool如何给Excel按行设置背景颜色
- 汉诺塔问题的时间复杂度