PyQt5(19)打印设置对话框,打印pdf文件以及文件的读取
\'\'\' 使用打印机 \'\'\' 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)#从屏幕上(20,20)位置开始(即为最左上角的点),显示一个260*30的界面(宽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() painter = QtGui.QPainter() # 将绘制的目标重定向到打印机 painter.begin(printer) screen = self.editor.grab() painter.drawPixmap(10,10,screen)#从左上角(10,10)开始绘制 painter.end() print("print") if __name__ == \'__main__\': app = QtWidgets.QApplication(sys.argv) gui = PrintSupport() gui.show() app.exec_()
\'\'\' 显示打印对话框 \'\'\' 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_())