九、PyQt5 之 打印机

一、使用打印机

#!/usr/bin/python
# -*- coding:utf-8 -*-

"""
把数据输出到打印机,都是以图像的形式输出,把要打印的数据整体当成图片输出
"""

from PyQt5 import QtGui, QtWidgets, QtPrintSupport
from PyQt5.QtWidgets import *
import sys


class PrintSupport(QMainWindow):
    def __init__(self):
        super(PrintSupport, self).__init__()

        self.setGeometry(500, 200, 300, 300)

        self.button = QPushButton("打印QTextEdit空间中的内容", self)
        self.button.setGeometry(20, 20, 260, 30)
        self.editor = QTextEdit("默认文本", self)
        self.editor.setGeometry(20, 60, 260, 200)
        self.button.clicked.connect(self.print)

    def print(self):
        # 创建一个打印对象
        printer = QtPrintSupport.QPrinter()
        # 创建一个画布对象
        pranter = QtGui.QPainter()
        # 将绘制的内筒重定向到打印机
        pranter.begin(printer)
        # 获取editor整个空间的屏幕
        screen = self.editor.grab()
        pranter.drawPixmap(10, 10, screen)
        pranter.end()
        print("print")


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    gui = PrintSupport()
    gui.show()
    app.exec_()

二、显示打印机对话框

#!/usr/bin/python
# -*- coding:utf-8 -*-

from PyQt5.QtWidgets import QWidget, QApplication, QPushButton, QTextEdit, QFileDialog, QDialog
from PyQt5.QtPrintSupport import QPageSetupDialog, QPrintDialog, QPrinter
import sys


class PrintDialog(QWidget):
    def __init__(self):
        super(PrintDialog, self).__init__()
        self.printer = QPrinter()
        self.initUI()

    def initUI(self):
        self.setGeometry(300, 300, 500, 400)
        self.setWindowTitle('打印对话框')

        self.editor = QTextEdit(self)
        self.editor.setGeometry(20, 20, 300, 270)

        self.openButton = QPushButton("打开文件", self)
        self.openButton.move(350, 20)

        self.settingsButton = QPushButton("打印设置", self)
        self.settingsButton.move(350, 50)

        self.printButton = QPushButton("打印文档", self)
        self.printButton.move(350, 80)

        self.openButton.clicked.connect(self.openFile)
        self.settingsButton.clicked.connect(self.showSettingsDialog)
        self.printButton.clicked.connect(self.showPrintDialog)

    # 打开文件
    def openFile(self):
        fname = QFileDialog.getOpenFileName(self, "打开文本文件", "./")
        if fname[0]:
            with open(fname[0], "r", encoding="utf-8", errors="ignore") as f:
                self.editor.setText(f.read())

    # 显示打印设置对话框
    def showSettingsDialog(self):
        printDialog = QPageSetupDialog(self.printer, self)
        printDialog.exec()

    # 显示打印对话框
    def showPrintDialog(self):
        printdialog = QPrintDialog(self.printer, self)
        if QDialog.Accepted == printdialog.exec():
            self.editor.print(self.printer)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    gui = PrintDialog()
    gui.show()
    sys.exit(app.exec_())

 

posted on 2022-07-04 08:57  软饭攻城狮  阅读(229)  评论(0)    收藏  举报

导航