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入门篇之正则表达式
Oct 20 Python
python将字符串转换成数组的方法
Apr 29 Python
Python使用try except处理程序异常的三种常用方法分析
Sep 05 Python
Windows下Anaconda2安装NLTK教程
Sep 19 Python
Python正则表达式指南 推荐
Oct 09 Python
浅析python的Lambda表达式
Feb 27 Python
通过shell+python实现企业微信预警
Mar 07 Python
python使用装饰器作日志处理的方法
Jul 11 Python
Python列表(list)所有元素的同一操作解析
Aug 01 Python
Python简易计算器制作方法代码详解
Oct 31 Python
详解python datetime模块
Aug 17 Python
如何通过安装HomeBrew来安装Python3
Dec 23 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版
2006/10/09 PHP
sphinx增量索引的一个问题
2011/06/14 PHP
数据库中排序的对比及使用条件详解
2012/02/23 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
2014/07/25 PHP
thinkPHP+ajax实现统计页面pv浏览量的方法
2017/03/15 PHP
详解php反序列化
2020/06/10 PHP
jQuery ajax BUG:object doesn't support this property or method
2010/07/06 Javascript
用JQuery模仿淘宝的图片放大镜显示效果
2011/09/15 Javascript
JS实现根据出生年月计算年龄
2014/01/10 Javascript
Javascript连接多个数组不用concat来解决
2014/03/24 Javascript
浅谈Node.js中的定时器
2015/06/18 Javascript
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
2016/04/15 Javascript
jQuery post数据至ashx实例详解
2016/11/18 Javascript
JS立即执行函数功能与用法分析
2019/01/15 Javascript
Layui 导航默认展开和菜单栏选中高亮设置的方法
2019/09/04 Javascript
jQuery cookie的公共方法封装和使用示例
2020/06/01 jQuery
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
Python操作CouchDB数据库简单示例
2015/03/10 Python
在Django的通用视图中处理Context的方法
2015/07/21 Python
简单实现python进度条脚本
2017/12/18 Python
快速查询Python文档方法分享
2017/12/27 Python
实用自动化运维Python脚本分享
2018/06/04 Python
Python定时任务sched模块用法示例
2018/07/16 Python
python实现图片上添加图片
2019/11/26 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
2020/03/25 Python
pycharm如何设置官方中文(如何汉化)
2020/12/29 Python
英国伦敦的睡衣品牌:Asceno
2019/10/06 全球购物
.NET里面什么时候需要调用垃圾回收
2015/06/01 面试题
介绍一下常见的木马种类
2014/11/15 面试题
单位成立周年感言
2014/01/26 职场文书
幼儿园中班开学寄语
2014/04/03 职场文书
2015年医务科工作总结范文
2015/05/26 职场文书
建党伟业电影观后感
2015/06/01 职场文书
小学英语教学随笔
2015/08/14 职场文书
煤矿施工安全协议书
2016/03/22 职场文书
详解Flutter自定义应用程序内键盘的实现方法
2022/06/14 Java/Android