打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【pyqt5学习】

目录

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)完整代码案例

  1. '''
  2. 直接调用打印机,利用QPainter和QtPrintSupport()实现
  3. '''
  4. from PyQt5 import QtWidgets,QtPrintSupport
  5. from PyQt5.QtWidgets import QPushButton,QTextEdit,QVBoxLayout
  6. from PyQt5.QtGui import QPainter
  7. import sys
  8. class printSupportDemo(QtWidgets.QWidget):
  9. def __init__(self):
  10. super(printSupportDemo, self).__init__()
  11. layout = QVBoxLayout()
  12. self.btn1 = QPushButton("打印")
  13. self.text1 = QTextEdit()
  14. self.text1.setText("123\n\n\ntest\n\n\ntest\ntest\ntest\ntest\n---------------------\ntest\ntest\ntest\ntest\n---------------------")
  15. self.btn1.clicked.connect(self.printText)
  16. layout.addWidget(self.btn1)
  17. layout.addWidget(self.text1)
  18. self.setLayout(layout)
  19. # 打印
  20. def printText(self):
  21. # 获取打印机对象
  22. printer = QtPrintSupport.QPrinter()
  23. # 创建一个画布——因为打印其实就是将打印区域变成一个图像,然后逐像素打印在纸上
  24. painter = QPainter() ## 将画布设置在打印机上
  25. # 将画布设置在打印机上
  26. painter.begin(printer)
  27. ###################方法一:将文本框数据作为一个图像抓取过来,但是只有显示的数据才会打印出来#######
  28. # screen = self.text1.grab()
  29. # # 将图像绘制到打印机上
  30. # painter.drawPixmap(10,10,screen) # 左上角点为(10,10)
  31. ###################方法二:获取文本框的内容,绘制到打印机中,无法带格式打印,会打印在一行#######
  32. # text = self.text1.toPlainText()
  33. # painter.drawText(10,10,text)
  34. ##################方法三:直接调用文本框自带的打印,失败###############
  35. self.text1.print(printer)
  36. # 结束打印
  37. painter.end()
  38. if __name__ == '__main__':
  39. app = QtWidgets.QApplication(sys.argv)
  40. mainWin = printSupportDemo()
  41. mainWin.show()
  42. app.exec_()

3)结果 

 最终会输出一个pdf文件

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

1)弹出打印设置对话框

  1. def showSettingsDialog(self):
  2. settingsDialog = QPageSetupDialog(self.printer,self) # 在当前窗口针对打印机对象弹出设置对话框
  3. settingsDialog.exec() # 循环

2)弹出打印对话框

  1. def showPrintDialog(self):
  2. printerDialog = QPrintDialog(self.printer,self) # 在当前窗口针对打印机对象弹出打印对话框
  3. # printerDialog.exec()表示等待用户的操作,QDialog.Accepted表示用户操作了类似于确认的操作,当用户的操作时确认的操作时,执行if下面的语句
  4. if QDialog.Accepted == printerDialog.exec():
  5. self.textEdit.print(self.printer)

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

printerDialog.exec()表示对话框在等待用户的操作,用户操作了会返回一个状态

QDialog.Accepted表示对话框用户执行了一个类似于确定的操作,如确认、打印等

该句的意义就是当用户点击了打印这种确定的操作就会执行if语句下面的代码

3)完整代码 

任务描述

'''
任务:
1、打开文件将文件内容显示在TextEdit上;
2、弹出打印机设置窗口,对打印参数进行设置
3、弹出打印窗口,将TextEdit中的文本内容打印出来(这里以打印成pdf为例
'''

代码 

  1. from PyQt5.QtWidgets import QWidget,QPushButton,QTextEdit,QVBoxLayout,QFileDialog,QDialog
  2. from PyQt5.QtPrintSupport import QPrinter,QPrintDialog,QPageSetupDialog
  3. import sys
  4. class printDialogDemo(QWidget):
  5. def __init__(self):
  6. super(printDialogDemo, self).__init__()
  7. # 创建打印机对象
  8. self.printer = QPrinter()
  9. # 创建三个按钮
  10. self.btn1 = QPushButton("打开文件") # 打开文件并且将文件内容显示在TextEdit中
  11. self.btn2 = QPushButton("弹出打印设置窗口") # 弹出打印设置窗口
  12. self.btn3 = QPushButton("打印") # 进行打印
  13. # 创建文本框,用于显示打印的文本内容
  14. self.textEdit = QTextEdit()
  15. # 设置垂直布局将控件放入
  16. layout = QVBoxLayout()
  17. layout.addWidget(self.btn1)
  18. layout.addWidget(self.btn2)
  19. layout.addWidget(self.btn3)
  20. layout.addWidget(self.textEdit)
  21. # 将布局设置在窗口
  22. self.setLayout(layout)
  23. self.setWindowTitle("利用PyQt5进行文件打印")
  24. # 按钮设置槽函数
  25. self.btn1.clicked.connect(self.openFile)
  26. self.btn2.clicked.connect(self.showSettingsDialog)
  27. self.btn3.clicked.connect(self.showPrintDialog)
  28. def openFile(self):
  29. fname = QFileDialog.getOpenFileName(self,"打开文件",".")
  30. if fname[0]:
  31. # 打开文件,将文件的内容显示在文本框中
  32. with open(fname[0],'r',encoding="utf-8") as f:
  33. self.textEdit.setText(f.read())
  34. def showSettingsDialog(self):
  35. settingsDialog = QPageSetupDialog(self.printer,self) # 在当前窗口针对打印机对象弹出设置对话框
  36. settingsDialog.exec() # 循环
  37. def showPrintDialog(self):
  38. printerDialog = QPrintDialog(self.printer,self) # 在当前窗口针对打印机对象弹出打印对话框
  39. # printerDialog.exec()表示等待用户的操作,QDialog.Accepted表示用户操作了类似于确认的操作,当用户的操作时确认的操作时,执行if下面的语句
  40. if QDialog.Accepted == printerDialog.exec():
  41. self.textEdit.print(self.printer)
  42. if __name__ == '__main__':
  43. app = QtWidgets.QApplication(sys.argv)
  44. mainWin = printDialogDemo()
  45. mainWin.show()
  46. app.exec_()

运行界面效果

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

选择一个文件打开后 

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

可以看得可以设置页面边距、大小、方向等

 

点击“打印”按钮效果

可以选择打印机,这里以输出为pdf为例

 

 打印结果——使用的是文本框自带的print(printer)方法,只是打印输入到了打印机

self.textEdit.print(self.printer)

可以看到,打印出来的pdf可以将文本框的所有内容打印出来,并且格式没有改变(会分段) 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
PyQt5中弹出框QDialog的show()和exec()的区别
PyQt5教程——对话框(6)
PyQt 界面控件常用积累
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
python – 在PyQt中创建带行号的文本区域(textEdit)
PyQt5快速入门(五)PyQt5布局管理
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服