Ошибки нет. Результата тоже.

weamagic

Пользователь
Пользователь
Июл 11, 2020
149
13
18
Python 3.8, Win 7/10

Есть две формы. Для каждой формы создан свой класс. Полностью приводить дизайн не буду, укажу только суть.
Python:
class form_img(QtWidgets.QMainWindow):
        def __init__(self):
            super().__init__()
            self.setupUi(self)
            self.base_img = plt.Figure()
            self.ax = self.base_map.add_subplot()
            self.can_img = FigureCanvasQTAgg(self.base_img)
            self.widget_base_img.addWidget(self.can_img)
            #widget_base_img - VBoxLayout
          
        def post_base_img_line(self, x, y):
            self.ax.plot(x, y, s=0.25)
            self.canvas.draw()
          
class data_img(QtWidgets.QMainWindow):
    #инициализацию дизайна пропускаю - не важна. там всего таблица с кнопкой
    def form_line(x, y)
        x_out = [np.nanmin(x), np.nanmax(x)]
        y_out = [np.nanmin(y), np.nanmax(y)]
        p = form_img()
        p.post_base_img_line(x_out, y_out)
        print(1)
По клику на кнопку, на первом плоте должна рисоваться линия. Единичка в консоль выводится, а вот линия на плоте не появляется. Подскажите, где проблема.
 
Последнее редактирование:
  • Мне нравится
Реакции: Student

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
По клику на кнопку, на первом плоте должна рисоваться линия. Единичка в консоль выводится, а вот линия на плоте не появляется. Подскажите, где проблема.
Без минимально рабочего примера кода разобраться трудно.
Вот пример рисования случайной линии на канве по клику на кнопку:
Python:
import sys
import random
import matplotlib
from PyQt5 import QtWidgets
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg
from matplotlib.figure import Figure
matplotlib.use('Qt5Agg')


class MplCanvas(FigureCanvasQTAgg):

    def __init__(self, parent=None, width=5, height=4, dpi=100):
        fig = Figure(figsize=(width, height), dpi=dpi)
        self.axes = fig.add_subplot(111)
        super(MplCanvas, self).__init__(fig)

    def post_base_img_line(self, x, y):
        self.axes.plot(x, y)
        self.draw()


class MainForm(QtWidgets.QMainWindow):
    def setupUi(self, MainWindow):
        MainWindow.resize(600, 600)

        layout = QtWidgets.QVBoxLayout()

        widget = QtWidgets.QWidget()
        widget.setLayout(layout)
        self.setCentralWidget(widget)

        self.btn = QtWidgets.QPushButton()
        self.btn.setText("Draw line")
        self.btn.clicked.connect(self.btn_clicked)

        self.sc = MplCanvas(self, width=4, height=4, dpi=100)
        self.sc.axes.plot([0, 1, 2, 3, 4], [10, 20, 30, 40, 50])
        layout.addWidget(self.btn)
        layout.addWidget(self.sc)

        self.show()

    def btn_clicked(self):
        x = [random.randint(0, 50) for i in range(5)]
        y = [random.randint(0, 50) for i in range(5)]
        self.sc.post_base_img_line(x, y)


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = MainForm()
    ui.setupUi(MainWindow)
    sys.exit(app.exec_())
 

weamagic

Пользователь
Пользователь
Июл 11, 2020
149
13
18
https://github.com/infer134/full_prj - ссылка на гит_хаб с кодом. Проблема появляется при нажатии кнопки Read
 

Форум IT Специалистов