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 布尔操作实现代码
Mar 23 Python
Python使用sklearn库实现的各种分类算法简单应用小结
Jul 04 Python
Python中的单下划线和双下划线使用场景详解
Sep 09 Python
python 利用turtle库绘制笑脸和哭脸的例子
Nov 23 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
Nov 26 Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
Feb 29 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
Apr 30 Python
Python之变量类型和if判断方式
May 05 Python
学会python自动收发邮件 代替你问候女友
May 20 Python
解决Keras 自定义层时遇到版本的问题
Jun 16 Python
python办公自动化之excel的操作
May 23 Python
Python爬虫入门案例之爬取二手房源数据
Oct 16 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抓屏函数实现屏幕快照代码分享
2014/01/02 PHP
redirect_uri参数错误的解决方法(必看)
2017/02/16 PHP
客户端脚本中常常出现的一些问题和调试技巧
2007/01/09 Javascript
禁用页面部分JavaScript方法的具体实现
2013/07/31 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
2014/05/14 Javascript
jQuery中andSelf()方法用法实例
2015/01/08 Javascript
jQuery中trigger()方法用法实例
2015/01/19 Javascript
javascript图片预加载实例分析
2015/07/16 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
2015/12/24 Javascript
JS实现隐藏同级元素后只显示JS文件内容的方法
2016/09/04 Javascript
jQuery 移动端拖拽(模块化开发,触摸事件,webpack)
2016/10/28 Javascript
利用JavaScript实现拖拽改变元素大小
2016/12/14 Javascript
彻底解决 webpack 打包文件体积过大问题
2017/07/07 Javascript
基于js中的原型(全面讲解)
2017/09/19 Javascript
实现div内部滚动条滚动到底部和顶部的代码
2017/11/15 Javascript
使用vue-router在Vue页面之间传递数据的方法
2019/07/15 Javascript
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
在Linux中通过Python脚本访问mdb数据库的方法
2015/05/06 Python
python调用fortran模块
2016/04/08 Python
Python爬取网易云音乐热门评论
2017/03/31 Python
Pycharm学习教程(7)虚拟机VM的配置教程
2017/05/04 Python
python微信跳一跳系列之自动计算跳一跳距离
2018/02/26 Python
使用python搭建服务器并实现Android端与之通信的方法
2019/06/28 Python
wxpython布局的实现方法
2019/11/01 Python
python生成器用法实例详解
2019/11/22 Python
windows环境中利用celery实现简单任务队列过程解析
2019/11/29 Python
python图形界面开发之wxPython树控件使用方法详解
2020/02/24 Python
韩国三星集团旗下时尚品牌官网:SSF SHOP
2016/08/02 全球购物
公司业务主管岗位职责
2013/12/07 职场文书
十八大闭幕感言
2014/01/22 职场文书
给学校的建议书
2014/03/12 职场文书
教师聘用意向书
2015/05/11 职场文书
房屋质量投诉书
2015/07/02 职场文书
2016年幼儿园教师师德承诺书
2016/03/25 职场文书
十一月早安语录:把心放轻,人生就是一朵自在的云
2019/11/04 职场文书
CSS 实现磨砂玻璃(毛玻璃)效果样式
2023/05/21 HTML / CSS