#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. Для полного кода было бы достаточно одного файла.