Schemdraw是使用matplotlib通过python绘制和显示原理图。例如,如果您运行以下代码,它将在matplot中绘制。
现在的问题是如何将这个matplotlib嵌入到PyQt5中?
谢谢
import schemdraw
import schemdraw.elements as elm
d = schemdraw.Drawing(fontsize=10)
d.add(elm.Capacitor())
r=d.add(elm.Resistor(theta=40))
d.add(elm.Diode(label="D1"))
d.draw()发布于 2020-10-09 23:20:14
使用pypi提供的版本,您不能嵌入schemdraw (至少以一种简单的方式),但是查看存储库,我看到在下一个版本中,draw方法被修改为接受一个轴,因此您必须从存储库安装schemdraw:
python -m pip install git+https://bitbucket.org/cdelker/schemdraw.git然后修改官方matplotlib示例,您可以嵌入schemdraw:
import sys
from matplotlib.backends.qt_compat import QtCore, QtWidgets
if QtCore.qVersion() >= "5.":
from matplotlib.backends.backend_qt5agg import (
FigureCanvas,
NavigationToolbar2QT as NavigationToolbar,
)
else:
from matplotlib.backends.backend_qt4agg import (
FigureCanvas,
NavigationToolbar2QT as NavigationToolbar,
)
from matplotlib.figure import Figure
import schemdraw
import schemdraw.elements as elm
class ApplicationWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self._main = QtWidgets.QWidget()
self.setCentralWidget(self._main)
layout = QtWidgets.QVBoxLayout(self._main)
canvas = FigureCanvas(Figure(figsize=(5, 3)))
layout.addWidget(canvas)
self.addToolBar(NavigationToolbar(canvas, self))
ax = canvas.figure.subplots()
d = schemdraw.Drawing(fontsize=10)
d.add(elm.Capacitor())
r = d.add(elm.Resistor(theta=40))
d.add(elm.Diode(label="D1"))
d.draw(ax=ax)
if __name__ == "__main__":
# Check whether there is already a running QApplication (e.g., if running
# from an IDE).
qapp = QtWidgets.QApplication.instance()
if not qapp:
qapp = QtWidgets.QApplication(sys.argv)
app = ApplicationWindow()
app.show()
app.activateWindow()
app.raise_()
qapp.exec_()

https://stackoverflow.com/questions/64281325
复制相似问题