打印

  

打印图像-自写打印方法

 1 import sys
 2 from PyQt5.QtCore import Qt, QPoint, QRect
 3 from PyQt5.QtGui import QPainter, QPixmap, QIcon
 4 from PyQt5.QtPrintSupport import QPrintDialog, QPrinter
 5 from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QHBoxLayout, QVBoxLayout
 6 
 7 class Demo(QWidget):
 8     def __init__(self):
 9         super(Demo, self).__init__()
10         self.resize(600, 600)
11 
12         self.begin_point = QPoint()
13         self.end_point = QPoint()
14 
15         self.pix = QPixmap(600, 600)
16         self.pix.fill(Qt.white)
17 
18         self.printer = QPrinter() #实例化打印对象
19 
20         self.print_btn = QPushButton(self)
21         self.print_btn.setIcon(QIcon(r'C:\Users\ming\Desktop\2.png'))
22         self.print_btn.clicked.connect(self.open_printer_func)
23         #点击打印按钮进入打印设置函数
24 
25         self.h_layout = QHBoxLayout()
26         self.v_layout = QVBoxLayout()
27         self.h_layout.addWidget(self.print_btn)
28         self.h_layout.addStretch(1)
29         self.v_layout.addLayout(self.h_layout)
30         self.v_layout.addStretch(1)
31 
32         self.setLayout(self.v_layout)
33 
34     def open_printer_func(self):#打印设置函数
35         printer_dialog = QPrintDialog(self.printer)  #实例化一个打印设置对话框
36         #参数 打印对象
37         if printer_dialog.exec_():  #以模态方式打开 打印设置对话框
38             painter = QPainter(self.printer)  #把打印对象作为画布
39             painter.drawPixmap(0, 0, self.pix)#把需要打印的图像添加到画布[也是添加到打印对象上]
40 
41     def paintEvent(self, QPaintEvent):
42         painter = QPainter(self)
43         painter.drawPixmap(0, 0, self.pix)
44 
45         if self.begin_point and self.end_point:
46             rect = QRect(self.begin_point, self.end_point)
47             painter.drawRect(rect)
48 
49     def mousePressEvent(self, QMouseEvent):
50         if QMouseEvent.button() == Qt.LeftButton:
51             self.begin_point = QMouseEvent.pos()
52             self.end_point = self.begin_point
53             self.update()
54 
55     def mouseMoveEvent(self, QMouseEvent):
56         if QMouseEvent.buttons() == Qt.LeftButton:
57             self.end_point = QMouseEvent.pos()
58             self.update()
59 
60     def mouseReleaseEvent(self, QMouseEvent):
61         if QMouseEvent.button() == Qt.LeftButton:
62             painter = QPainter(self.pix)
63             rect = QRect(self.begin_point, self.end_point)
64             painter.drawRect(rect)
65             self.begin_point = self.end_point = QPoint()
66             self.update()
67 
68 
69 if __name__ == '__main__':
70     app = QApplication(sys.argv)
71     demo = Demo()
72     demo.show()
73     sys.exit(app.exec_())

 

 

打印文本-控件自带打印方法

 1 import sys
 2 from PyQt5.QtPrintSupport import QPrintDialog, QPrinter
 3 from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QTextEdit, QVBoxLayout
 4 
 5 class Demo(QWidget):
 6     def __init__(self):
 7         super(Demo, self).__init__()
 8         self.text_edit = QTextEdit(self)
 9         self.print_btn = QPushButton('打印', self)
10         self.print_btn.clicked.connect(self.open_printer_func)
11 
12         self.printer = QPrinter() #实例化一个打印对象
13 
14         self.v_layout = QVBoxLayout()
15         self.v_layout.addWidget(self.text_edit)
16         self.v_layout.addWidget(self.print_btn)
17         self.setLayout(self.v_layout)
18 
19     def open_printer_func(self):
20         printer_dialog = QPrintDialog(self.printer)  #实例化一个打印设置对话框
21         # 参数 打印对象
22         if printer_dialog.exec_():#以模态方式打开 打印设置对话框
23             self.text_edit.print(self.printer)#把打印对象传给控件的print方法
24 
25 if __name__ == '__main__':
26     app = QApplication(sys.argv)
27     demo = Demo()
28     demo.show()
29     sys.exit(app.exec_())

 

posted @ 2019-02-22 23:26  天子骄龙  阅读(231)  评论(0编辑  收藏  举报