一、自身原因
之前使用Matplotlib在PyQt5窗口里画图,由于技术不到家,测试的时候,不到0.1就能刷新了,但是移植到完整项目时,就翻车了,用了20多秒,对比以下两张图
后来我发现有个更美观的图形界面库-pyecharts,也可以结合QWebEngineView使用,因为他可以生成html文件
二、同样先看main函数
if __name__ == '__main__': app = QApplication(sys.argv) mainwindow = QMainWindow() mainwindow.setWindowTitle('demo') mainwindow.resize(870, 570) my_demo = DEMO(mainwindow) sys.exit(app.exec_())
三、看我写的类DEMO
class DEMO: def __init__(self, mainwindow): widget = QWidget() self.vboxlayout = QVBoxLayout(widget) self.browser = QWebEngineView() self.vboxlayout.addWidget(self.browser) self.button_init() mainwindow.setCentralWidget(widget) mainwindow.show() def button_init(self): button1 = QPushButton('柱形图') button2 = QPushButton('饼行图') button3 = QPushButton('环行图') self.vboxlayout.addWidget(button1) self.vboxlayout.addWidget(button2) self.vboxlayout.addWidget(button3) button1.clicked.connect(self.demo_bar) button2.clicked.connect(self.demo_pie) button3.clicked.connect(self.demo_pie_h) def demo_bar(self): """ 柱形图 """ bar = Bar('我的第一个表-主标题', '目标题') bar.add('服务', ['衬衫', '衬衫', 'C语言', 'python'], [5, 7, 8, 9]) bar.show_config() bar.render(path='render_1.html') self.browser.load(QUrl("file:///render_1.html")) def demo_pie(self): """ 饼图 """ attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [11, 12, 13, 10, 10, 10] pie = Pie("饼图示例") pie.add("", attr, v1, is_label_show=True) pie.render(path='render_pie.html') self.browser.load(QUrl("file:///render_pie.html")) def demo_pie_h(self): """ 圆环图 """ attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"] v1 = [11, 12, 13, 10, 10, 10] pie = Pie("饼图-圆环图示例", title_pos='center') pie.add("", attr, v1, radius=[40, 75], label_text_color=None, is_label_show=True, legend_orient='vertical', legend_pos='left') pie.render(path='render_pie_h.html') self.browser.load(QUrl("file:///render_pie_h.html"))
四、运行结果
将代码 三和四 放同一个文件就可以运行了,其他的自己解决