打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python调用打印机参考例子
from PyQt5.QtWidgets import (QApplication, QWidget, QTableWidget,QPushButton,
                             QVBoxLayout,
                            QTableWidgetItem)
from PyQt5.QtGui import  QPixmap, QPainter, QImage, QTextDocument
from PyQt5.QtPrintSupport import  QPrinter, QPrintDialog, QPrintPreviewDialog
from PyQt5.QtCore import QRect, QPoint, QSize ,  Qt
# 有预览框<br># 908204694@qq.com<br>#
def on_htmlButton_clicked():
    printer =QPrinter(QPrinter.HighResolution)
    #/* 打印预览 */
    preview =QPrintPreviewDialog(printer,widget )  
    preview.paintRequested.connect(printHtml)
     
    #
    #   显示 预览框
    #
    #preview.exec()
    preview.exec_()
def printHtml(printer):
    html = '''<html>
    <head></head>
    <body>
        <h1>55555</h1><b>bold</b><h1>55555</h1><b>bold</b>
        <h1>55555</h1><b>bold</b>
        <h1>55555</h1><b>bold</b><h1>55555</h1><b>bold</b>
        <h1>55555</h1><b>bold</b>
        <h1>55555</h1><b>bold</b>
        <h1>55555</h1><b>bold</b>
        <h1>55555</h1><b>bold</b>
        <h1>55555</h1><b>bold</b>
        <h1>55555</h1><b>bold</b>
        <h1>55555</h1><b>bold</b><h1>55555</h1><b>bold</b>
        <h1>55555</h1><b>bold</b>
        <h1>55555</h1><b>bold</b>
        <h1>55555</h1><b>bold</b>
        <h1>55555</h1><b>bold</b><h1>55555</h1><b>bold</b>
        <h1>55555</h1><b>bold</b>
        <h1>55555</h1><b>bold</b>
        <h1>55555</h1><b>bold</b>
        <h1>55555</h1><b>bold</b>
    </body>
    </html>'''
    textDocument = QTextDocument()
    textDocument.setHtml(html)
    #textDocument.print(printer)
    textDocument.print_(printer)
    
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 sys
app = QApplication(sys.argv)
tablewidget = QTableWidget()
## 设置列数
tablewidget.setColumnCount(4)
tablewidget.horizontalHeader().setDefaultSectionSize(150)
## QStringList在PyQt5
header= ['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)
button_txt = QPushButton('打印文字')
button_txt.clicked.connect(on_htmlButton_clicked)
widget = QWidget()
layout = QVBoxLayout(widget)
layout.addWidget(button)
layout.addWidget(button_txt)
layout.addWidget(tablewidget)
widget.show()
sys.exit(app.exec_())
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
PyQt5高级界面控件之QTableWidget(四)
【pyqt5学习】
pyqt5 tablewidget导出excel
Qt 5——常用控件(QLable、QLineEdit、)
Python PyQt5在Windows 下载与安装
QT tablewidget
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服