Очистка буфера двоичного ввода / вывода - PullRequest
0 голосов
/ 29 мая 2020

У меня есть эта функция generatePlots (), которая возвращает два двоичных буфера ввода-вывода, а затем считывает их другой функцией для отображения графиков. Эта функция вызывается, когда я нажимаю кнопку.

Моя проблема, с которой я сейчас сталкиваюсь, заключается в том, что когда я нажимаю кнопку несколько раз для создания графиков, оказывается, что буферы не обновляются новыми данными, но они сохраняют мусор данные или данные из предыдущего события, так как результат не ожидался.

Мой вопрос, как правильно использовать sh буфер при каждом нажатии кнопки?

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
from reportlab.platypus import Image
from PyQt5.QtGui import QIcon

class App(QWidget):

    def __init__(self):
        super().__init__()
        self.left = 10
        self.top = 10
        self.width = 320
        self.height = 200
        self.initUI()

    def initUI(self):
        self.setGeometry(self.left, self.top, self.width, self.height)
        button = QPushButton('Generate', self)
        button.setToolTip('This is an example button')
        button.move(100,70)
        button.clicked.connect(self.generate_report)

        self.show()

    def generatePlots(data):

        # Plot 1
        plt.plot(data.time * 1e6, data.signal_volts)
        plt.grid(True)
        plt.autoscale(enable=True, axis='x', tight=True)
        buf = BytesIO()
        plt.savefig(buf, format="png")
        # buf.truncate(0)
        buf.seek(0)

        # Plot 2
        y1 = [-12, 0]
        plt.figure()
        plt.plot(data.frequencies * 1e-6, data.dB[0:int(data.dB.size/2 + 1)])
        plt.axis([0,data.frequency * 1e-6 * 2,-12,0.1])
        plt.grid(True)

        buf_2 = BytesIO()
        plt.savefig(buf_2, format="png")
        # buf_2.truncate(0)
        buf_2.seek(0)

        return (buf, buf_2)

    def generate_report(self):
            test= Scan()
            test_plot, test2_plot = self.generatePlots(test)
            story = []
            test1 = Image(test_plot, 4*inch, 3*inch)
            test2 = Image(test2_plot , 4*inch, 3*inch)
            story.append(test1)
            story.append(test2)
            document.build(story)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())
...