python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例


Posted in Python onFebruary 28, 2020

PyQt5打印控件QPrinter简介

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

QPrinter的使用实例

import sys
from PyQt5.QtWidgets import QApplication,QMainWindow,QLabel,QSizePolicy,QAction
from PyQt5.QtPrintSupport import QPrintDialog,QPrinter
from PyQt5.QtGui import QImage,QIcon,QPixmap

class MainWindow(QMainWindow):
  def __init__(self,parent=None):
    super(MainWindow, self).__init__(parent)

    #设置标题
    self.setWindowTitle('打印图片')

    #创建标签,设置标签的大小规则以及控件的位置居中
    self.imageLabel=QLabel()
    self.imageLabel.setSizePolicy(QSizePolicy.Ignored,QSizePolicy.Ignored)
    self.setCentralWidget(self.imageLabel)

    #实例化Qimage类
    self.image = QImage()
    #自定义的多个函数,实现的功能不一
    self.createActions()
    self.createMenus()
    self.createToolBars()

    if self.image.load('images\screen.png'):
      self.imageLabel.setPixmap(QPixmap.fromImage(self.image))
      self.resize(self.image.width(),self.image.height())

  def createActions(self):
    #加载图标,添加快捷方式,添加提示信息,绑定槽函数
    self.PrintAction=QAction(QIcon('images\screen.png'),self.tr('打印'),self)
    self.PrintAction.setShortcut('Ctrl+P')
    self.PrintAction.setStatusTip(self.tr('打印'))
    self.PrintAction.triggered.connect(self.slotPrint)
  def createMenus(self):
    #实例化菜单栏,并添加一个父菜单,以及把PrintAction添加到父菜单下
    PrintMenu=self.menuBar().addMenu(self.tr('打印'))
    PrintMenu.addAction(self.PrintAction)

  def createToolBars(self):
    #在工具栏区域内添加控件printACtion
    fileToolBar=self.addToolBar('Print')
    fileToolBar.addAction(self.PrintAction)

  def slotPrint(self):
    #实例化打印图像对象
    printer=QPrinter()
    #打印窗口弹出
    printDialog=QPrintDialog(printer,self)
    if printDialog.exec_():

      painter=QPainter(printer)
      #实例化视图窗口
      rect=painter.viewport()
      #获取图片的尺寸
      size=self.image.size()

      size.scale(rect.size(),Qt.KeepAspectRatio)
      #设置视图窗口的属性
      painter.setViewport(rect.x(),rect.y(),size.width(),size.height())

      #设置窗口的大小为图片的尺寸,并在窗口内绘制图片
      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_())

运行程序,显示效果如下

python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例

打印功能

python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例

本文详细讲解了PyQt5打印控件QPrinter详细使用方法与实例,更多关于PyQt5控件知识请查看下面的相关链接

Python 相关文章推荐
用生成器来改写直接返回列表的函数方法
May 25 Python
pyqt5使用按钮进行界面的跳转方法
Jun 19 Python
Python 把序列转换为元组的函数tuple方法
Jun 27 Python
Python实现TCP通信的示例代码
Sep 09 Python
python 检查数据中是否有缺失值,删除缺失值的方式
Dec 02 Python
Python识别html主要文本框过程解析
Feb 18 Python
在jupyter notebook中调用.ipynb文件方式
Apr 14 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
May 20 Python
python 装饰器的使用示例
Oct 10 Python
Jupyter Notebook 安装配置与使用详解
Jan 06 Python
python基于OpenCV模板匹配识别图片中的数字
Mar 31 Python
在python中读取和写入CSV文件详情
Jun 28 Python
使用sklearn的cross_val_score进行交叉验证实例
Feb 28 #Python
彻底搞懂 python 中文乱码问题(深入分析)
Feb 28 #Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
Feb 28 #Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
Feb 28 #Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
Feb 28 #Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
Feb 28 #Python
浅谈ROC曲线的最佳阈值如何选取
Feb 28 #Python
You might like
使用adodb lite解决问题
2006/12/31 PHP
PHP 5.3新特性命名空间规则解析及高级功能
2010/03/11 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
2016/11/09 PHP
Windows下wamp php单元测试工具PHPUnit安装及生成日志文件配置方法
2018/05/28 PHP
prototype 1.5相关知识及他人笔记
2006/12/16 Javascript
Javascript 中介者模式实例
2009/12/16 Javascript
JS打开新窗口的2种方式
2013/04/18 Javascript
jquery对dom的操作常用方法整理
2013/06/25 Javascript
javascript 获取网页标题代码实例
2014/01/22 Javascript
jQuery的$.proxy()应用示例介绍
2014/04/03 Javascript
jQuery简单实现网页选项卡特效
2014/11/24 Javascript
谈谈我对JavaScript中typeof和instanceof的深入理解
2015/12/25 Javascript
深入学习jQuery Validate表单验证(二)
2016/01/18 Javascript
JS实现“隐藏与显示”功能(多种方法)
2016/11/24 Javascript
smartupload实现文件上传时获取表单数据(推荐)
2016/12/12 Javascript
Vue.js实现在下拉列表区域外点击即可关闭下拉列表的功能(自定义下拉列表)
2017/05/30 Javascript
Vue.js实现价格计算器功能
2020/03/30 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
2019/01/23 Javascript
详解JavaScript中的强制类型转换
2019/04/15 Javascript
vue-路由精讲 二级路由和三级路由的作用
2020/08/06 Javascript
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
ant-design表单处理和常用方法及自定义验证操作
2020/10/27 Javascript
[44:21]Ti4 循环赛第四日 附加赛NEWBEE vs LGD
2014/07/13 DOTA
Python自定义函数的创建、调用和函数的参数详解
2014/03/11 Python
机器学习python实战之手写数字识别
2017/11/01 Python
python实现扫描ip地址的小程序
2019/04/16 Python
python实现视频分帧效果
2019/05/31 Python
css3加js做一个简单的3D行星运转效果实例代码
2017/01/18 HTML / CSS
简单叙述一下MYSQL的优化
2016/05/09 面试题
食堂员工工作职责
2013/12/18 职场文书
五一口号
2014/06/19 职场文书
卫生院艾滋病宣传活动小结
2014/07/09 职场文书
大学生实习推荐信
2015/03/27 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
答谢酒会主持词
2015/07/02 职场文书
进行数据处理的6个 Python 代码块分享
2022/04/06 Python