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实现BLAST
Feb 12 Python
python读取文件名称生成list的方法
Apr 27 Python
Pycharm导入Python包,模块的图文教程
Jun 13 Python
Python3.4 tkinter,PIL图片转换
Jun 21 Python
对numpy中的where方法嵌套使用详解
Oct 31 Python
python接口自动化测试之接口数据依赖的实现方法
Apr 26 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
Oct 24 Python
Python标准库itertools的使用方法
Jan 17 Python
python如何判断IP地址合法性
Apr 05 Python
python实现批处理文件
Jul 28 Python
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
May 21 Python
python爬虫之selenium库的安装及使用教程
May 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函数计算中英文字符串长度的方法
2014/11/11 PHP
php文件缓存类汇总
2014/11/21 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
2020/02/21 PHP
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
2009/05/21 Javascript
jquery判断单个复选框是否被选中的代码
2009/09/03 Javascript
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
用js实现控件的隐藏及style.visibility的使用
2013/06/14 Javascript
JS实现点击图片在当前页面放大并可关闭的漂亮效果
2013/10/18 Javascript
给ListBox添加双击事件示例代码
2013/12/02 Javascript
Jquery创建层显示标题和内容且随鼠标移动而移动
2014/01/26 Javascript
jQuery实现友好的轮播图片特效
2015/01/12 Javascript
Angular 根据 service 的状态更新 directive
2016/04/03 Javascript
详解微信小程序入门五: wxml文件引用、模版、生命周期
2017/01/20 Javascript
基于JS实现限时抢购倒计时间表代码
2017/05/09 Javascript
微信小程序 地图map实例详解
2017/06/07 Javascript
实例详解Node.js 函数
2018/06/10 Javascript
利用JavaScript缓存远程窃取Wi-Fi密码的思路详解
2018/11/05 Javascript
VueJS 组件参数名命名与组件属性转化问题
2018/12/03 Javascript
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
2019/08/03 Javascript
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
JS实现打砖块游戏
2020/02/14 Javascript
Javascript中Math.max和Math.max.apply的区别和用法详解
2020/08/24 Javascript
Python 实现数据库更新脚本的生成方法
2017/07/09 Python
Python3实现腾讯云OCR识别
2018/11/27 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
2019/01/23 Python
学生信息管理系统Python面向对象版
2019/01/30 Python
python从子线程中获得返回值的方法
2019/01/30 Python
PyQt5 实现字体大小自适应分辨率的方法
2019/06/18 Python
python中的函数递归和迭代原理解析
2019/11/14 Python
PyCharm2019.3永久激活破解详细图文教程,亲测可用(不定期更新)
2020/10/29 Python
Canvas在超级玛丽游戏中的应用详解
2021/02/06 HTML / CSS
社区十八大感言
2014/01/19 职场文书
父亲的菜园教学反思
2014/02/13 职场文书
经典婚礼主持词
2014/03/13 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
python开发实时可视化仪表盘的示例
2021/05/07 Python