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 相关文章推荐
Python中列表和元组的相关语句和方法讲解
Aug 20 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
Sep 30 Python
基于python3 OpenCV3实现静态图片人脸识别
May 25 Python
python运行时强制刷新缓冲区的方法
Jan 14 Python
Python进阶之全面解读高级特性之切片
Feb 19 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
Feb 18 Python
Pycharm+Python工程,引用子模块的实现
Mar 09 Python
python实现提取COCO,VOC数据集中特定的类
Mar 10 Python
python3检查字典传入函数键是否齐全的实例
Jun 05 Python
python让函数不返回结果的方法
Jun 22 Python
Python3.9.1中使用match方法详解
Feb 08 Python
python 提取html文本的方法
May 20 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
博士208HAF收音机实习报告
2021/03/02 无线电
php二维数组排序与默认自然排序的方法介绍
2013/04/27 PHP
PHP采用get获取url汉字出现乱码的解决方法
2014/11/13 PHP
php实现utf-8转unicode函数分享
2015/01/06 PHP
php微信开发之百度天气预报
2016/11/18 PHP
jquery 取子节点及当前节点属性值
2014/07/25 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
JavaScript编写一个简易购物车功能
2016/09/17 Javascript
jQuery+CSS3实现仿花瓣网固定顶部位置带悬浮效果的导航菜单
2016/09/21 Javascript
Javascript 实现微信分享(QQ、朋友圈、分享给朋友)
2016/10/21 Javascript
JS基于正则表达式的替换操作(replace)用法示例
2017/04/28 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
2017/07/27 Javascript
vuejs使用$emit和$on进行组件之间的传值的示例
2017/10/04 Javascript
示例vue 的keep-alive缓存功能的实现
2018/12/13 Javascript
vue实现form表单与table表格的数据关联功能示例
2019/01/29 Javascript
js简单遍历获取对象中的属性值的方法示例
2019/06/19 Javascript
javaScript代码飘红报错看不懂?读完这篇文章再试试
2020/08/19 Javascript
centos系统升级python 2.7.3
2014/07/03 Python
编写Python的web框架中的Model的教程
2015/04/29 Python
python回调函数用法实例分析
2015/05/09 Python
TensorFlow实现随机训练和批量训练的方法
2018/04/28 Python
Win10下Python3.7.3安装教程图解
2019/07/08 Python
Python测试线程应用程序过程解析
2019/12/31 Python
Python参数传递机制传值和传引用原理详解
2020/05/22 Python
eBay瑞士购物网站:eBay.ch
2018/12/24 全球购物
意大利网上书店:LaFeltrinelli
2020/06/12 全球购物
C#里面如何判断一个Object是否是某种类型(如Boolean)?
2016/02/10 面试题
党委书记岗位职责
2013/11/24 职场文书
学前教育毕业生自荐信范文
2013/12/24 职场文书
师范院校学生自荐信范文
2013/12/27 职场文书
产品质量承诺书
2014/03/27 职场文书
2014年社区工作总结
2014/11/18 职场文书
2015年大学辅导员工作总结
2015/05/12 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书
PostgreSQL出现死锁该如何解决
2022/05/30 PostgreSQL
基于Redission的分布式锁实战
2022/08/14 Redis