【PyQt5-Qt Designer】讀取txt文件在打印


  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 ################################################
  7 #######打印文本---海子的詩
  8 ################################################
  9 the_text = '''
 10 從明天起,做一個幸福的人 
 11 喂馬、劈柴,周游世界 
 12 從明天起,關心糧食和蔬菜 
 13 我有一所房子,面朝大海,春暖花開 
 14 從明天起,和每一個親人通信 
 15 告訴他們我的幸福 
 16 那幸福的閃電告訴我的 
 17 我將告訴每一個人 
 18 給每一條河每一座山取一個溫暖的名字 
 19 陌生人,我也為你祝福 
 20 願你有一個燦爛的前程 
 21 願你有情人終成眷屬 
 22 願你在塵世獲得幸福 
 23 我只願面朝大海,春暖花開
 24 '''
 25 
 26 class MainWindow(QMainWindow):
 27     def __init__(self, parent=None):
 28         super(MainWindow, self).__init__(parent)
 29         self.setWindowTitle(self.tr("打印功能"))
 30 
 31         # 創建文本框
 32         self.label = QLabel()
 33         self.label.setFont(QFont("宋體",12,QFont.Bold))
 34         self.label.setText(the_text)
 35         self.setCentralWidget(self.label)
 36 
 37         # 創建菜單欄
 38         self.createMenus()
 39 
 40     def createMenus(self):
 41         # 創建動作一
 42         self.printAction1 = QAction(self.tr("打印無預留"), self)
 43         self.printAction1.triggered.connect(self.on_printAction1_triggered)
 44 
 45         # 創建動作二
 46         self.printAction2 = QAction(self.tr("打印有預留"), self)
 47         self.printAction2.triggered.connect(self.on_printAction2_triggered)
 48 
 49         # 創建動作三
 50         self.printAction3 = QAction(self.tr("直接打印"), self)
 51         self.printAction3.triggered.connect(self.on_printAction3_triggered)
 52 
 53         # 創建動作四
 54         self.printAction4 = QAction(self.tr("打印到PDF"), self)
 55         self.printAction4.triggered.connect(self.on_printAction4_triggered)
 56 
 57 
 58         # 創建菜單,添加動作
 59         self.printMenu = self.menuBar().addMenu(self.tr("打印"))
 60         self.printMenu.addAction(self.printAction1)
 61         self.printMenu.addAction(self.printAction2)
 62         self.printMenu.addAction(self.printAction3)
 63         self.printMenu.addAction(self.printAction4)
 64 
 65 
 66 
 67     # 動作一:打印,無預覽
 68     def on_printAction1_triggered(self):
 69         printer = QPrinter()
 70         printDialog = QPrintDialog(printer, self)
 71         if printDialog.exec_() == QDialog.Accepted:
 72             self.handlePaintRequest(printer)
 73 
 74 
 75     # 動作二:打印,有預覽
 76     def on_printAction2_triggered(self):
 77         dialog = QPrintPreviewDialog()
 78         dialog.paintRequested.connect(self.handlePaintRequest)
 79         dialog.exec_()
 80 
 81     # 動作三:直接打印
 82     def on_printAction3_triggered(self):
 83         printer = QPrinter()
 84         self.handlePaintRequest(printer)
 85 
 86     # 動作四:打印到pdf
 87     def on_printAction4_triggered(self):
 88         printer = QPrinter()
 89         printer.setOutputFormat(QPrinter.PdfFormat)
 90         printer.setOutputFileName("D:/pdf打印測試.pdf")
 91         self.handlePaintRequest(printer)
 92 
 93 
 94     ## 打印函數
 95     def handlePaintRequest(self, printer):
 96         document = QTextDocument()
 97         cursor = QTextCursor(document)
 98         cursor.insertText(self.label.text())
 99         document.print(printer)
100 
101 
102 if __name__ == "__main__":
103     app = QApplication(sys.argv)
104     main = MainWindow()
105     main.show()
106     sys.exit(app.exec_())

 


免責聲明!

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



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