中国建设银行门户网站企业,网页截图快捷键设置,做网站架构,设计网站软件开发目录 1、利用QtPrintSupport直接连接打印机——不常用
1#xff09;基本知识 2#xff09;完整代码案例
3#xff09;结果
2、 打印对话框QPrintDialog、打印设置对话框QPageSetupDialog
1#xff09;弹出打印设置对话框
2#xff09;弹出打印对话框 注#xff1a…目录 1、利用QtPrintSupport直接连接打印机——不常用
1基本知识 2完整代码案例
3结果
2、 打印对话框QPrintDialog、打印设置对话框QPageSetupDialog
1弹出打印设置对话框
2弹出打印对话框 注QDialog.Accepted printerDialog.exec()
3完整代码
任务描述
代码
运行界面效果 点击“打开文件”按钮效果
点击“弹出打印设置窗口”按钮效果
编辑
点击“打印”按钮效果
编辑 打印结果——使用的是文本框自带的printprinter方法只是打印输入到了打印机 1、利用QtPrintSupport直接连接打印机——不常用
1基本知识
将textEdit文本框中的内容打印到pdf中的三种方法方法一将文本框数据作为一个图像抓取过来但是只有显示的数据才会打印出来#######
# screen self.text1.grab()
# # 将图像绘制到打印机上
# painter.drawPixmap(10,10,screen) # 左上角点为10,10方法二获取文本框的内容绘制到打印机中无法带格式打印会打印在一行#######
# text self.text1.toPlainText()
# painter.drawText(10,10,text)方法三直接调用文本框自带的打印失败###############
self.text1.print(printer) 没有任何东西打印 2完整代码案例 直接调用打印机利用QPainter和QtPrintSupport()实现from PyQt5 import QtWidgets,QtPrintSupport
from PyQt5.QtWidgets import QPushButton,QTextEdit,QVBoxLayout
from PyQt5.QtGui import QPainterimport sysclass printSupportDemo(QtWidgets.QWidget):def __init__(self):super(printSupportDemo, self).__init__()layout QVBoxLayout()self.btn1 QPushButton(打印)self.text1 QTextEdit()self.text1.setText(123\n\n\ntest\n\n\ntest\ntest\ntest\ntest\n---------------------\ntest\ntest\ntest\ntest\n---------------------)self.btn1.clicked.connect(self.printText)layout.addWidget(self.btn1)layout.addWidget(self.text1)self.setLayout(layout)# 打印def printText(self):# 获取打印机对象printer QtPrintSupport.QPrinter()# 创建一个画布——因为打印其实就是将打印区域变成一个图像然后逐像素打印在纸上painter QPainter() ## 将画布设置在打印机上# 将画布设置在打印机上painter.begin(printer)###################方法一将文本框数据作为一个图像抓取过来但是只有显示的数据才会打印出来######## screen self.text1.grab()# # 将图像绘制到打印机上# painter.drawPixmap(10,10,screen) # 左上角点为10,10###################方法二获取文本框的内容绘制到打印机中无法带格式打印会打印在一行######## text self.text1.toPlainText()# painter.drawText(10,10,text)##################方法三直接调用文本框自带的打印失败###############self.text1.print(printer)# 结束打印painter.end()if __name__ __main__:app QtWidgets.QApplication(sys.argv)mainWin printSupportDemo()mainWin.show()app.exec_()3结果 最终会输出一个pdf文件
2、 打印对话框QPrintDialog、打印设置对话框QPageSetupDialog
1弹出打印设置对话框 def showSettingsDialog(self):settingsDialog QPageSetupDialog(self.printer,self) # 在当前窗口针对打印机对象弹出设置对话框settingsDialog.exec() # 循环
2弹出打印对话框 def showPrintDialog(self):printerDialog QPrintDialog(self.printer,self) # 在当前窗口针对打印机对象弹出打印对话框# printerDialog.exec()表示等待用户的操作QDialog.Accepted表示用户操作了类似于确认的操作当用户的操作时确认的操作时执行if下面的语句if QDialog.Accepted printerDialog.exec():self.textEdit.print(self.printer)注QDialog.Accepted printerDialog.exec() printerDialog.exec()表示对话框在等待用户的操作用户操作了会返回一个状态 QDialog.Accepted表示对话框用户执行了一个类似于确定的操作如确认、打印等 该句的意义就是当用户点击了打印这种确定的操作就会执行if语句下面的代码 3完整代码
任务描述 任务 1、打开文件将文件内容显示在TextEdit上 2、弹出打印机设置窗口对打印参数进行设置 3、弹出打印窗口将TextEdit中的文本内容打印出来这里以打印成pdf为例 代码
from PyQt5.QtWidgets import QWidget,QPushButton,QTextEdit,QVBoxLayout,QFileDialog,QDialog
from PyQt5.QtPrintSupport import QPrinter,QPrintDialog,QPageSetupDialogimport sysclass printDialogDemo(QWidget):def __init__(self):super(printDialogDemo, self).__init__()# 创建打印机对象self.printer QPrinter()# 创建三个按钮self.btn1 QPushButton(打开文件) # 打开文件并且将文件内容显示在TextEdit中self.btn2 QPushButton(弹出打印设置窗口) # 弹出打印设置窗口self.btn3 QPushButton(打印) # 进行打印# 创建文本框用于显示打印的文本内容self.textEdit QTextEdit()# 设置垂直布局将控件放入layout QVBoxLayout()layout.addWidget(self.btn1)layout.addWidget(self.btn2)layout.addWidget(self.btn3)layout.addWidget(self.textEdit)# 将布局设置在窗口self.setLayout(layout)self.setWindowTitle(利用PyQt5进行文件打印)# 按钮设置槽函数self.btn1.clicked.connect(self.openFile)self.btn2.clicked.connect(self.showSettingsDialog)self.btn3.clicked.connect(self.showPrintDialog)def openFile(self):fname QFileDialog.getOpenFileName(self,打开文件,.)if fname[0]:# 打开文件将文件的内容显示在文本框中with open(fname[0],r,encodingutf-8) as f:self.textEdit.setText(f.read())def showSettingsDialog(self):settingsDialog QPageSetupDialog(self.printer,self) # 在当前窗口针对打印机对象弹出设置对话框settingsDialog.exec() # 循环def showPrintDialog(self):printerDialog QPrintDialog(self.printer,self) # 在当前窗口针对打印机对象弹出打印对话框# printerDialog.exec()表示等待用户的操作QDialog.Accepted表示用户操作了类似于确认的操作当用户的操作时确认的操作时执行if下面的语句if QDialog.Accepted printerDialog.exec():self.textEdit.print(self.printer)if __name__ __main__:app QtWidgets.QApplication(sys.argv)mainWin printDialogDemo()mainWin.show()app.exec_()
运行界面效果 点击“打开文件”按钮效果
选择一个文件打开后 点击“弹出打印设置窗口”按钮效果
可以看得可以设置页面边距、大小、方向等 点击“打印”按钮效果
可以选择打印机这里以输出为pdf为例 打印结果——使用的是文本框自带的printprinter方法只是打印输入到了打印机 self.textEdit.print(self.printer) 可以看到打印出来的pdf可以将文本框的所有内容打印出来并且格式没有改变会分段