How to copy an image from matplotlib...FigureCanvas() to use the QTextEdit insertImage() method?
1 answer
As an option:
import os import sys from PyQt5.QtGui import * from PyQt5.QtWidgets import * from PyQt5.QtCore import * from pyqtgraph import PlotWidget folder = os.getcwd() def btnClick(w): fnameOld = "screen_shot_{}.png".format(str(wi)) if os.path.exists("{}/{}".format(folder, "screen_shot_{}.png".format(str(wi)))): os.remove("screen_shot_{}.png".format(str(wi))) wi += 1 fname = "screen_shot_{}.png".format(str(wi)) pixmap = QPixmap(w.plotWidget.size()) w.plotWidget.render(QPainter(pixmap)) pixmap.save(fname) w.editor.textCursor().insertImage("{}/{}".format(folder, fname)) # <-------- class MainWindow(QWidget): def __init__(self, *args, **kwargs): super(MainWindow, self).__init__(*args, **kwargs) self.resize(400, 650) self.i = 0 self.plotWidget = PlotWidget() self.plotWidget.plot(x=[0.0, 1.0, 2.0, 3.0], y=[4.4, 2.5, 2.1, 2.2]) self.btn = QPushButton("Π‘ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠ° ΠΈ Π²ΡΡΠ°Π²ΠΈΡΡ Π² QTextEdit") self.btn.clicked.connect(lambda: btnClick(self)) self.editor = QTextEdit() self.editor.setAcceptRichText(False) self.editor.setAutoFormatting(QTextEdit.AutoAll) font = QFont('Times', 12) self.editor.setFont(font) self.editor.setFontPointSize(12) layout = QGridLayout() layout.addWidget(self.editor, 0, 0) layout.addWidget(self.plotWidget, 1, 0) layout.addWidget(self.btn, 2, 0) layout.setRowMinimumHeight(0, 300) layout.setRowStretch(1, 1) self.setLayout(layout) if __name__ == '__main__': app = QApplication(sys.argv) app.setApplicationName("ΠΡΡΠ°Π²ΠΊΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² QTextEdit") window = MainWindow() window.show() app.exec_() |
