写点什么

Python Qt GUI 设计:QPrinter 打印图片类(基础篇—21)

  • 2021 年 12 月 03 日
  • 本文字数:1410 字

    阅读完需:约 5 分钟

Python Qt GUI设计:QPrinter打印图片类(基础篇—21)

打印图像是图像处理软件中的一个常用功能,打印图像实际上是在 QPaintDevice 中画图,与平常在 QWidget、QPixmap 和 Qlmage 中画图一样,都是创建一个 QPainter 对象进行画图的,只是打印使用的是 QPrinter,它本质上也是一个 QPaintDevice(绘图设备)。

通过一个示例了解 QPrinter 打印图片类的使用,效果如下所示:

实现代码如下所示:

from PyQt5.QtCore import Qtfrom PyQt5.QtGui import QImage , QIcon, QPixmapfrom PyQt5.QtWidgets import QApplication  , QMainWindow, QLabel,  QSizePolicy , QActionfrom PyQt5.QtPrintSupport import QPrinter, QPrintDialogimport sys        class MainWindow(QMainWindow):  	def __init__(self,parent=None):  		super(MainWindow,self).__init__(parent)  		self.setWindowTitle(self.tr("打印图片"))         # 创建一个放置图像的QLabel对象imageLabel,并将该QLabel对象设置为中心窗体。 		self.imageLabel=QLabel()  		self.imageLabel.setSizePolicy(QSizePolicy.Ignored,QSizePolicy.Ignored)  		self.setCentralWidget(self.imageLabel)   		self.image=QImage()  		         # 创建菜单,工具条等部件 		self.createActions()  		self.createMenus()  		self.createToolBars()          # 在imageLabel对象中放置图像		if self.image.load("./2.jpg"):  			self.imageLabel.setPixmap(QPixmap.fromImage(self.image))  			self.resize(self.image.width(),self.image.height())  										def createActions(self):  		self.PrintAction=QAction(QIcon("./2.jpg"),self.tr("打印"),self)  		self.PrintAction.setShortcut("Ctrl+P")  		self.PrintAction.setStatusTip(self.tr("打印"))  		self.PrintAction.triggered.connect(self.slotPrint)  	def createMenus(self):  		PrintMenu=self.menuBar().addMenu(self.tr("打印"))  		PrintMenu.addAction(self.PrintAction)   	def createToolBars(self):  		fileToolBar=self.addToolBar("Print")  		fileToolBar.addAction(self.PrintAction)   	def slotPrint(self):         # 新建一个QPrinter对象 		printer=QPrinter()         # 创建一个QPrintDialog对象,参数为QPrinter对象 		printDialog=QPrintDialog(printer,self)   		'''       判断打印对话框显示后用户是否单击“打印”按钮,若单击“打印”按钮,       则相关打印属性可以通过创建QPrintDialog对象时使用的QPrinter对象获得,       若用户单击“取消”按钮,则不执行后续的打印操作。 		''' 				if printDialog.exec_():             # 创建一个QPainter对象,并指定绘图设备为一个QPrinter对象。			painter=QPainter(printer)  			# 获得QPainter对象的视口矩形			rect=painter.viewport()  			# 获得图像的大小			size=self.image.size()  			# 按照图形的比例大小重新设置视口矩形			size.scale(rect.size(),Qt.KeepAspectRatio)  			painter.setViewport(rect.x(),rect.y(),size.width(),size.height())  			# 设置QPainter窗口大小为图像的大小			painter.setWindow(self.image.rect()) 			# 打印						painter.drawImage(0,0,self.image)   if __name__ == "__main__":                    	app=QApplication(sys.argv)  	main=MainWindow()  	main.show()  	sys.exit(app.exec_()) 
复制代码


发布于: 1 小时前阅读数: 4
用户头像

【研究方向】物联网、嵌入式、AI、Python 2018.02.09 加入

【公众号】美男子玩编程,关注获取海量资源~

评论

发布
暂无评论
Python Qt GUI设计:QPrinter打印图片类(基础篇—21)