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实现的去除win下文本文件头部BOM的代码
Feb 10 Python
Python bsddb模块操作Berkeley DB数据库介绍
Apr 08 Python
Python入门之三角函数sin()函数实例详解
Nov 08 Python
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
Feb 03 Python
Django中Model的使用方法教程
Mar 07 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
Aug 02 Python
Python Pandas中根据列的值选取多行数据
Jul 08 Python
使用Python制作一个打字训练小工具
Oct 01 Python
Python3.7安装keras和TensorFlow的教程图解
Jun 18 Python
Numpy之reshape()使用详解
Dec 26 Python
Python随机数函数代码实例解析
Feb 09 Python
python 递归相关知识总结
Mar 03 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三层结构(上) 简单三层结构
2010/07/04 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
2013/07/03 PHP
PHP中$_FILES的使用方法及注意事项说明
2014/02/14 PHP
PHP cURL初始化和执行方法入门级代码
2015/05/28 PHP
editable.js 基于jquery的表格的编辑插件
2011/10/24 Javascript
JS 添加网页桌面快捷方式的代码详细整理
2012/12/27 Javascript
js的image onload事件使用遇到的问题
2014/07/15 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
JavaScript将字符串转换为整数的方法
2015/04/14 Javascript
jQuery插件kinMaxShow扩展效果用法实例
2015/05/04 Javascript
jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
2016/06/12 Javascript
AngularJS自定义插件实现网站用户引导功能示例
2016/11/07 Javascript
JavaScript日期选择功能示例
2017/01/16 Javascript
原生js实现回复评论功能
2017/01/18 Javascript
js判断PC端与移动端跳转
2020/12/24 Javascript
JS加密插件CryptoJS实现的Base64加密示例
2020/08/16 Javascript
ionic使用angularjs表单验证(模板验证)
2018/12/12 Javascript
[52:52]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第三局
2016/02/27 DOTA
使用python绘制人人网好友关系图示例
2014/04/01 Python
Python利用带权重随机数解决抽奖和游戏爆装备问题
2016/06/16 Python
python的paramiko模块实现远程控制和传输示例
2017/10/13 Python
pytorch 数据集图片显示方法
2018/07/26 Python
python 顺时针打印矩阵的超简洁代码
2018/11/14 Python
django解决跨域请求的问题详解
2019/01/20 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
Python运算符+与+=的方法实例
2021/02/18 Python
美国在线眼镜店:GlassesShop
2018/11/15 全球购物
学生请假条
2014/04/11 职场文书
捐书活动总结
2014/05/04 职场文书
超市商业计划书
2014/05/04 职场文书
水污染治理工程专业求职信
2014/06/14 职场文书
委托书如何写
2014/08/30 职场文书
放弃继承权公证书
2015/01/23 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
旗帜观后感
2015/06/08 职场文书
JS新手入门数组处理的实用方法汇总
2021/04/07 Javascript