博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
QT把widget转换成图片后打印
阅读量:7243 次
发布时间:2019-06-29

本文共 2407 字,大约阅读时间需要 8 分钟。

 

 

 

from PyQt5.QtWidgets import (QApplication, QWidget, QTableWidget,QPushButton,                              QVBoxLayout,                             QTableWidgetItem)from PyQt5.QtGui import  QPixmap, QPainter, QImage, QTextDocumentfrom PyQt5.QtPrintSupport import  QPrinter, QPrintDialog, QPrintPreviewDialogfrom PyQt5.QtCore import QRect, QPoint, QSize ,  Qt   def on_picButton_clicked():    printer =QPrinter(QPrinter.HighResolution)#/* 打印预览 */    preview =QPrintPreviewDialog(printer,widget )       """     * QPrintPreviewDialog类提供了一个打印预览对话框,里面功能比较全,     * paintRequested(QPrinter *printer)是系统提供的,     * 当preview.exec()执行时该信号被触发,     * plotPic(QPrinter *printer)是用户自定义的槽函数,图像的绘制就在这个函数里。    """    preview.paintRequested.connect(plotPic)    preview.exec(); #/* 等待预览界面退出 */def  plotPic(printer):          painter =QPainter(printer);    image = QPixmap()    image=widget.grab(QRect( QPoint( 0, 0 ),                                             QSize( widget.size().width(),                                                         widget.size().height()                                                    )                                         )                                )# /* 绘制窗口至画布 */   #QRect     rect = painter.viewport();   #QSize     size = image.size();    size.scale(rect.size(), Qt.KeepAspectRatio)#     //此处保证图片显示完整    painter.setViewport(rect.x(), rect.y(),size.width(), size.height());    painter.setWindow(image.rect());    painter.drawPixmap(0,0,image); #/* 数据显示至预览界面 */import sysapp = QApplication(sys.argv)tablewidget = QTableWidget()## 设置列数tablewidget.setColumnCount(4)tablewidget.horizontalHeader().setDefaultSectionSize(150)## QStringList在PyQt5header= ["name", "last modify time","type",  "size"]tablewidget.setHorizontalHeaderLabels(header)tablewidget.insertRow(0)tablewidget.insertRow(0)pItem1 =  QTableWidgetItem("aa" )pItem2 =  QTableWidgetItem("bb" )pItem3 =  QTableWidgetItem("cc" )pItem4 =  QTableWidgetItem("dd" )tablewidget.setItem( 0, 0, pItem1 )tablewidget.setItem( 0, 1, pItem2 )tablewidget.setItem( 0, 2, pItem3 )tablewidget.setItem( 0, 3, pItem4 )tablewidget.setMinimumSize(800, 600)button = QPushButton('打印界面')button.clicked.connect(on_picButton_clicked)widget = QWidget()layout = QVBoxLayout(widget)layout.addWidget(button)layout.addWidget(button_txt)layout.addWidget(tablewidget)widget.show()sys.exit(app.exec_())

 

转载于:https://www.cnblogs.com/ribavnu/p/4680734.html

你可能感兴趣的文章
windows程序员C/C++转向linux程序员时,如何编写、调试linux程序
查看>>
我的友情链接
查看>>
非等宽图片列表的布局
查看>>
【JAVA技术】webservice接口
查看>>
app打包总结 以及 提交app审核过程
查看>>
关于root(其他)用户拒绝登陆mysql的处理方法
查看>>
Linux基本常用命令总结-初级
查看>>
域计算机修改修改本地帐号密码
查看>>
负载均衡集群的实现方式之一LVS
查看>>
公有云产品试用介绍
查看>>
我的友情链接
查看>>
Servlet+JSP+MySQL实现用户管理模块之六、实现用户信息显示
查看>>
软件项目管理
查看>>
3012.脚本作业—l201.10.0编写一个脚本用于检测IP地址(递进版10)
查看>>
rpmbuild SPEC文件
查看>>
心在山水间
查看>>
ionic开发android app步骤
查看>>
【数据结构】位图BitMap与布隆过滤器BloomFilter
查看>>
mysql主从 主主
查看>>
Java中FileInputStream和FileOutputStream类实现文件夹及文件的复制粘贴
查看>>