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与caffe改变通道顺序的方法
Aug 04 Python
python面试题之列表声明实例分析
Jul 08 Python
python 实现12bit灰度图像映射到8bit显示的方法
Jul 08 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
Dec 22 Python
pytorch之inception_v3的实现案例
Jan 06 Python
Python小白学习爬虫常用请求报头
Jun 03 Python
python3读取autocad图形文件.py实例
Jun 05 Python
keras 解决加载lstm+crf模型出错的问题
Jun 10 Python
Python DES加密实现原理及实例解析
Jul 17 Python
Python 按比例获取样本数据或执行任务的实现代码
Dec 03 Python
Python常遇到的错误和异常
Nov 02 Python
Python实现提取PDF简历信息并存入Excel
Apr 02 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来处理多个提交任务
2008/05/08 PHP
php输出表格的实现代码(修正版)
2010/12/29 PHP
php中限制ip段访问、禁止ip提交表单的代码分享
2014/08/22 PHP
PHP使用flock实现文件加锁的方法
2015/07/01 PHP
LBS blog sql注射漏洞[All version]-官方已有补丁
2007/08/26 Javascript
js操作select控件的几种方法
2010/06/02 Javascript
25个非常棒的jQuery滑块插件和教程小结
2011/09/02 Javascript
JS连连看源码完美注释版(推荐)
2013/12/09 Javascript
JS实现超炫网页烟花动画效果的方法
2015/03/02 Javascript
禁止按回车键提交表单的方法
2015/06/11 Javascript
包含中国城市的javascript对象实例
2015/08/03 Javascript
Bootstrap每天必学之日期控制
2016/03/07 Javascript
bootstrap监听滚动实现头部跟随滚动
2016/11/08 Javascript
详解JS异步加载的三种方式
2017/03/07 Javascript
node中Express 动态设置端口的方法
2017/08/04 Javascript
jQuery选择器中的特殊符号处理方法
2017/09/08 jQuery
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
vue组件间的参数传递实例详解
2019/04/26 Javascript
Vue动态修改网页标题的方法及遇到问题
2019/06/09 Javascript
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
python的三目运算符和not in运算符使用示例
2014/03/03 Python
Python中的各种装饰器详解
2015/04/11 Python
Python文件去除注释的方法
2015/05/25 Python
python利用Guetzli批量压缩图片
2017/03/23 Python
教你使用python实现微信每天给女朋友说晚安
2018/03/23 Python
把pandas转换int型为str型的方法
2019/01/29 Python
python3+selenium自动化测试框架详解
2019/03/17 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
2020/02/12 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
2020/04/20 Python
Android Q之气泡弹窗的实现示例
2020/06/23 Python
全球最大的生存食品、水和装备专用在线市场:BePrepared.com
2020/01/02 全球购物
关于元旦的广播稿
2014/02/16 职场文书
2014年办公室主任工作总结
2014/11/12 职场文书
刑事法律意见书
2015/06/04 职场文书
2019年XX公司的晨会制度及流程!
2019/07/23 职场文书
python引入其他文件夹下的py文件具体方法
2021/05/23 Python