首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PyQt中嵌入模式绘图

如何在PyQt中嵌入模式绘图
EN

Stack Overflow用户
提问于 2020-10-09 21:43:48
回答 1查看 169关注 0票数 1

Schemdraw是使用matplotlib通过python绘制和显示原理图。例如,如果您运行以下代码,它将在matplot中绘制。

现在的问题是如何将这个matplotlib嵌入到PyQt5中?

谢谢

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-09 23:20:14

使用pypi提供的版本,您不能嵌入schemdraw (至少以一种简单的方式),但是查看存储库,我看到在下一个版本中,draw方法被修改为接受一个轴,因此您必须从存储库安装schemdraw:

代码语言:javascript
复制
python -m pip install git+https://bitbucket.org/cdelker/schemdraw.git

然后修改官方matplotlib示例,您可以嵌入schemdraw:

代码语言:javascript
复制
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_()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64281325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档