目录
1、利用QtPrintSupport直接连接打印机——不常用
2、 打印对话框QPrintDialog、打印设置对话框QPageSetupDialog
注:QDialog.Accepted == printerDialog.exec()
打印结果——使用的是文本框自带的print(printer)方法,只是打印输入到了打印机
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 QPainter
import sys
class 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_()

最低0.47元/天 解锁文章
9268

被折叠的 条评论
为什么被折叠?



