''' 使用打印機 ''' 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_())