Показать готовый график в виджете

#matplotlib #pyqt

#matplotlib #pyqt

Вопрос:

Я создал графический интерфейс с помощью Qt Designer и имею код, который генерирует 3D-модель с использованием matplotlib. Когда я запускаю этот код, открывается новое окно, которое позволяет мне взаимодействовать с этой моделью. Я хочу, чтобы это окно было внутри виджета в моем графическом интерфейсе. Идея в том, что у меня есть 3 кнопки с 3 разными моделями. И после щелчка по нему будет отображена выбранная модель.

В принципе, я не знаю, как подключить график к виджету.

Я попытался преобразовать QWidget в mplwidget, следуя этому руководству: https://www.youtube.com/watch?v=2C5VnE9wPhk

Но это не углубляется, и я нашел только это видео.

кроме того, я не знаю, является ли это проблемой, я использую matplotlib.pyplot.

  X = 2D-Array
 Y = 2D-Array
 Z = 2D-Array #(generetad using numpy.mehsgrid)
 fig = plt.figure()
 ax = fig.gca(projection='3d')
 ax.set_xlabel('X-Achse')
 ax.set_ylabel('Z-Achse')
 ax.set_zlabel('Y-Achse')
 ax.plot_surface(X, Z, Y, color='gray')
 plt.show()
  

так я получаю свое окно для своей модели

 class MatplotlibWidget(QMainWindow):
    def __init__(self):
        super().__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.pushButton_7.clicked.connect(self.sollmodell)
        # self.ui.pushButton_8.clicked.connect(self.openFileDialogISTI)
        # self.ui.pushButton_8.clicked.connect(self.openFileDialogSOLLA)
        self.ui.setupUi(self)
        self.show()
  

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

Ожидаемый: модель внутри виджета, которую можно изменить щелчком мыши Фактический: пустой виджет с осями x и y, изменяющимися от 0 до 1 и ничего не отображающими

Комментарии:

1. Вот как вы можете встроить рисунок matplotlib в виджет PyQt.

2. Здравствуйте, спасибо за эту ссылку. Интересно, как я никогда не натыкался на это. Не могли бы вы рассказать мне о разнице между статическим и динамическим холстом? Я думаю, что один из них предназначен для графиков, которые не изменяют right? И нужно ли мне создавать собственный файл .py только для виджета, как mtpwidget раньше, или я могу просто добавить этот класс в свой код, который создает мой графический интерфейс? заранее спасибо!

3. В примере добавлены две фигуры, и их соответствующему холсту присвоены эти имена. Другой разницы нет, и вместо этого вы могли бы называть их Max и Moritz. Для полного кода было бы достаточно одного файла.