【pyqt5学习】——利用Pyqt5连接打印机(QtPrintSupport、QPrintDialog、QPageSetupDialog)

目录

1、利用QtPrintSupport直接连接打印机——不常用

1)基本知识 

 2)完整代码案例

3)结果 

2、 打印对话框QPrintDialog、打印设置对话框QPageSetupDialog

1)弹出打印设置对话框

2)弹出打印对话框

注:QDialog.Accepted == printerDialog.exec()

3)完整代码 

任务描述

代码 

运行界面效果

 点击“打开文件”按钮效果

点击“弹出打印设置窗口”按钮效果

​编辑 

点击“打印”按钮效果

​编辑 

 打印结果——使用的是文本框自带的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_()

3)结果 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有情怀的机械男

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值