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使用urlparse分析网址中域名的方法
Apr 15 Python
利用Python获取操作系统信息实例
Sep 02 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
Oct 17 Python
Python3中函数参数传递方式实例详解
May 05 Python
如何使用Python标准库进行性能测试
Jun 25 Python
Python3从零开始搭建一个语音对话机器人的实现
Aug 23 Python
flask框架json数据的拿取和返回操作示例
Nov 28 Python
python实现矩阵和array数组之间的转换
Nov 29 Python
python扫描线填充算法详解
Feb 19 Python
Python内置异常类型全面汇总
May 28 Python
Python自动巡检H3C交换机实现过程解析
Aug 14 Python
python 利用PyAutoGUI快速构建自动化操作脚本
May 31 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
实测在class的function中include的文件中非php的global全局环境
2013/07/15 PHP
在laravel5.2中实现点击用户头像更改头像的方法
2019/10/14 PHP
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
JS 各种网页尺寸判断实例方法
2013/04/18 Javascript
『jQuery』取指定url格式及分割函数应用
2013/04/22 Javascript
jQuery实现类似淘宝购物车全选状态示例
2013/06/26 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
2014/01/17 Javascript
仿百度联盟对联广告实现代码
2014/08/30 Javascript
一个字符串反转函数可实现字符串倒序
2014/09/15 Javascript
JavaScript继承模式粗探
2016/01/12 Javascript
AngularJS入门之动画
2016/07/27 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
2016/09/05 Javascript
关于JavaScript和jQuery的类型判断详解
2016/10/08 Javascript
微信小程序通过api接口将json数据展现到小程序示例
2017/01/20 Javascript
js实现楼层导航功能
2017/02/23 Javascript
vue如何引用其他组件(css和js)
2017/04/13 Javascript
canvas简单快速的实现知乎登录页背景效果
2017/05/08 Javascript
EasyUI创建人员树的实例代码
2017/09/15 Javascript
基于vue-cli搭建多模块且各模块独立打包的项目
2019/06/12 Javascript
nodejs的安装使用与npm的介绍
2019/09/11 NodeJs
解决vue语法会有延迟加载显现{{xxx}}的问题
2019/11/14 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
在Vue中获取自定义属性方法:data-id的实例
2020/09/09 Javascript
vue-calendar-component 封装多日期选择组件的实例代码
2020/12/04 Vue.js
[00:35]DOTA2上海特级锦标赛 EG战队宣传片
2016/03/04 DOTA
python连接mysql实例分享
2016/10/09 Python
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
美国隐形眼镜网上商店:Lens.com
2019/09/03 全球购物
安全资金保障制度
2014/01/23 职场文书
个人综合鉴定材料
2014/05/23 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
2014年档案室工作总结
2014/12/01 职场文书
病人慰问信范文
2015/02/15 职场文书
2016年大学生暑期社会实践方案
2015/11/26 职场文书
2016银行招聘自荐信
2016/01/28 职场文书