Создание и обновление графика с использованием QPushButton в PyQt5 - PullRequest
0 голосов
/ 07 мая 2019

Я довольно новичок в PyQt5.Я хотел бы иметь кнопку, которая при нажатии генерирует и показывает график.Кажется, я не могу найти способ использовать QPushButton для успешного вызова функции PlotCanvas.

    import sys
    from PyQt5 import QtCore, QtGui, QtWidgets
    from PyQt5 import QtWidgets, Qt
    from matplotlib.figure import Figure
    import matplotlib.pyplot as plt
    from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
    import random
    import numpy as np
    import math

    class GUI_Window(QtWidgets.QWidget):

        def __init__(self):
            super().__init__()
            self.initUI()

        def initUI(self):
            self.plot_button = QtWidgets.QPushButton(self)
            self.plot_button.setText('Plot')
            self.plot_button.setToolTip('Plots the function')
            self.plot_button.move(50,240)

            self.plot_button.clicked.connect(self.updater)

       def updater(self):
           PlotCanvas(self, inputparam=5)
           print('Function has been called.')

Код выше не работает (PlotCanvas не печатает), даже если я получаю 'функция была названа «распечатка.

Однако, если я просто вызываю PlotCanvas в initUI, он отображает его, как и ожидалось.

    def initUI(self):
        self.plot_button = QtWidgets.QPushButton(self)
        self.plot_button.setText('Plot')
        self.plot_button.setToolTip('Plots the function')
        self.plot_button.move(50,240)

        self.plot_button.clicked.connect(self.updater)
        PlotCanvas(self, inputparam=5)

Приведенный выше код отображает функцию, как и ожидалось.

Далее, если я просто вызываю функцию updater без кнопки (показано ниже), график показывается.

    def initUI(self):
        self.plot_button = QtWidgets.QPushButton(self)
        self.plot_button.setText('Plot')
        self.plot_button.setToolTip('Plots the function')
        self.plot_button.move(50,240)

        #self.plot_button.clicked.connect(self.updater)
        self.updater()

   def updater(self):
       PlotCanvas(self, inputparam=5)
       print('Function has been called.')

Я чувствую, что не знаю, как работает «я», и, передав сигнал щелчка, якак-то все портит.Буду признателен за любую помощь / понимание.

    class PlotCanvas(FigureCanvas):

        def __init__(self, parent=None, width=1.5, height=2, dpi=100, inputparam=0):
            fig = Figure(figsize=(width, height), dpi=dpi)
            self.axes = fig.add_subplot(111)

            FigureCanvas.__init__(self, fig)
            self.setParent(parent)


            self.LLA_Plotter(inputparam)
# This function performs calculations and outputs x,y data points to plot



            ax = self.figure.add_subplot(111)
            for i in range(0,90):
                ax.scatter(x[i], y[i], color='b', s=0.6)
                ax.set_title('testing plot')
            plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...