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通过floor函数舍弃小数位的方法
Mar 17 Python
Python中asyncore异步模块的用法及实现httpclient的实例
Jun 28 Python
Python实现翻转数组功能示例
Jan 12 Python
PyQt4实现下拉菜单可供选择并打印出来
Apr 20 Python
python 移除字符串尾部的数字方法
Jul 17 Python
python实现Flappy Bird源码
Dec 24 Python
Pandas之MultiIndex对象的示例详解
Jun 25 Python
利用Pytorch实现简单的线性回归算法
Jan 15 Python
解决Django no such table: django_session的问题
Apr 07 Python
基于tensorflow for循环 while循环案例
Jun 30 Python
Python Matplotlib绘图基础知识代码解析
Aug 31 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
Jan 08 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
PHP中鲜为人知的10个函数
2014/02/28 PHP
使用php批量删除数据库下所有前缀为prefix_的表
2014/06/09 PHP
php自定义错误处理用法实例
2015/03/20 PHP
简单介绍win7下搭建apache+php+mysql开发环境
2015/08/06 PHP
phpMyAdmin通过密码漏洞留后门文件
2018/11/20 PHP
javascript 打印页面代码
2009/03/24 Javascript
jQuery动态添加 input type=file的实现代码
2012/06/14 Javascript
jquery js 重置表单 reset()具体实现代码
2013/08/05 Javascript
Script标签与访问HTML页面详解
2014/01/10 Javascript
javascript实现类似百度分享功能的方法
2015/07/27 Javascript
jQuery插件HighCharts绘制2D金字塔图效果示例【附demo源码下载】
2017/03/09 Javascript
从零开始学习Node.js系列教程二:文本提交与显示方法
2017/04/13 Javascript
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
微信小程序实现全国机场索引列表
2018/01/31 Javascript
mock.js实现模拟生成假数据功能示例
2019/01/15 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
2019/01/20 Javascript
webpack + vue 打包生成公共配置文件(域名) 方便动态修改
2019/08/29 Javascript
微信小程序中网络请求缓存的解决方法
2019/12/29 Javascript
easyUI 实现的后台分页与前台显示功能示例
2020/06/01 Javascript
Python的ORM框架SQLObject入门实例
2014/04/28 Python
python实现的多线程端口扫描功能示例
2017/01/21 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
使用Python实现企业微信的自动打卡功能
2019/04/30 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
2020/01/04 Python
基于tensorflow for循环 while循环案例
2020/06/30 Python
HTML5本地存储localStorage、sessionStorage基本用法、遍历操作、异常处理等
2014/05/08 HTML / CSS
J2EE面试题大全
2016/08/06 面试题
小学生自我评价范文
2014/01/25 职场文书
干部作风整顿个人剖析材料
2014/10/06 职场文书
专业技术职务聘任证明
2015/03/02 职场文书
师德承诺书2015
2015/04/28 职场文书
2015年财务科工作总结范文
2015/05/13 职场文书
家长会感言
2015/08/01 职场文书
浅谈什么是SpringBoot异常处理自动配置的原理
2021/06/21 Java/Android
小程序实现侧滑删除功能
2022/06/25 Javascript