使用打印机
''' 使用打印机 ''' 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() painter = QtGui.QPainter() # 将绘制的目标重定向到打印机 painter.begin(printer) screen = self.editor.grab() painter.drawPixmap(10,10,screen) 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_())