PyQt5-QPrinter控件使用


例如:(原創引用自 http://www.imooc.com/article/73044  )

  1 from PyQt5.QtGui import QFont,QTextDocument,QTextCursor
  2 from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QSizePolicy, QAction,QDialog
  3 from PyQt5.QtPrintSupport import QPrinter, QPrintDialog,QPrintPreviewDialog
  4 import sys
  5 
  6 the_text = """
  7 《描寫雪的詩句》賞析
  8 不知庭霰今朝落,疑是林花昨夜開《苑中遇雪》
  9 忽如一夜春風來,千樹萬樹梨花開《白雪歌送武》
 10 白雪卻嫌春色晚,故穿庭樹作飛花《春雪》
 11 雪似梅花,梅花似雪。似和不似都奇絕《踏莎行》
 12 千峰筍石千株玉,萬樹松蘿萬朵銀《南秦雪》
 13 六出飛花入戶時,坐看青竹變瓊枝《對雪》
 14 地白風色寒,雪花大如手《嘲王歷陽不肯飲酒》
 15 燕山雪花大如席,片片吹落軒轅台《北風行》
 16 白雪紛紛何所似?撒鹽空中差可擬《詠雪聯句》
 17 才見嶺頭雲似蓋,已驚岩下雪如塵《南秦雪》
 18 """
 19 class MainWindow(QMainWindow):
 20     def __init__(self, parent=None):
 21         super(MainWindow, self).__init__(parent)
 22         self.setWindowTitle("打印功能")
 23 
 24         # 創建文本框
 25         self.label = QLabel()
 26         self.label.setFont(QFont("Roman times",12,QFont.Bold))
 27         self.label.setText(the_text)
 28         self.setCentralWidget(self.label)
 29 
 30 
 31         # 創建菜單欄
 32         self.createMenus()
 33 
 34 
 35 
 36     def createMenus(self):
 37         # 創建動作一
 38         self.printAction1 = QAction(self.tr("打印無預留"), self)
 39         self.printAction1.triggered.connect(self.on_printAction1_triggered)
 40 
 41         # 創建動作二
 42         self.printAction2 = QAction(self.tr("打印有預留"), self)
 43         self.printAction2.triggered.connect(self.on_printAction2_triggered)
 44 
 45         # 創建動作三
 46         self.printAction3 = QAction(self.tr("直接打印"), self)
 47         self.printAction3.triggered.connect(self.on_printAction3_triggered)
 48 
 49         # 創建動作四
 50         self.printAction4 = QAction(self.tr("打印到PDF"), self)
 51         self.printAction4.triggered.connect(self.on_printAction4_triggered)
 52 
 53 
 54         # 創建菜單,添加動作
 55         self.printMenu = self.menuBar().addMenu(self.tr("打印"))
 56         self.printMenu.addAction(self.printAction1)
 57         self.printMenu.addAction(self.printAction2)
 58         self.printMenu.addAction(self.printAction3)
 59         self.printMenu.addAction(self.printAction4)
 60 
 61 
 62 
 63     # 動作一:打印,無預覽
 64     def on_printAction1_triggered(self):
 65         printer = QPrinter()
 66         printDialog = QPrintDialog(printer, self)
 67         if printDialog.exec_() == QDialog.Accepted:
 68             self.handlePaintRequest(printer)
 69 
 70 
 71     # 動作二:打印,有預覽
 72     def on_printAction2_triggered(self):
 73         dialog = QPrintPreviewDialog()
 74         dialog.paintRequested.connect(self.handlePaintRequest)
 75         dialog.exec_()
 76 
 77 
 78     # 動作三:直接打印
 79     def on_printAction3_triggered(self):
 80         printer = QPrinter()
 81         self.handlePaintRequest(printer)
 82 
 83 
 84     # 動作四:打印到pdf
 85     def on_printAction4_triggered(self):
 86         printer = QPrinter()
 87         printer.setOutputFormat(QPrinter.PdfFormat)
 88         printer.setOutputFileName("D:/pdf打印測試.pdf")
 89         self.handlePaintRequest(printer)
 90 
 91 
 92     ## 打印函數
 93     def handlePaintRequest(self, printer):
 94         document = QTextDocument()
 95         cursor = QTextCursor(document)
 96         cursor.insertText(self.label.text())
 97         document.print(printer)
 98 
 99 
100 if __name__ == "__main__":
101     app = QApplication(sys.argv)
102     main = MainWindow()
103     main.show()
104     sys.exit(app.exec_())

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM