如何在PyQt5中刷新、更新或断开信号?

2024-09-28 01:26:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我把一个按钮连接到一个绘制图形的方法上。它像预期的那样工作,但是当我关闭图形窗口并单击按钮尝试再次显示绘图时,什么都没有发生。在

我试过refreshupdatedisconnect,但我找不到解决办法。我是PyQt的新手。在

以下是我所拥有的:

import plot
self.btn.clicked.connect(self.showPlot)
def showPlot(self):
        plot.plt.show()

代码示例

绘图模块:plot.py

^{pr2}$

PyQt5模块:

import sys
from PyQt5.QtWidgets import (QWidget, QPushButton, QApplication)
import plot

class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):      

        self.btn = QPushButton('Show Plot', self)
        self.btn.move(20, 20)
        self.btn.clicked.connect(self.showPlot)

        self.setGeometry(300, 300, 290, 150)
        self.setWindowTitle('Show Plot')
        self.show()

    def showPlot(self):
        plot.plt.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

Tags: 模块importself图形绘图plotdefshow
1条回答
网友
1楼 · 发布于 2024-09-28 01:26:06

关闭该窗口后,将取消matplotlib的应用程序,此外,在另一个文件中使用脚本不是一个好的做法,建议只使用函数、类和/或定义,因此我建议将您的项目重新构造为以下内容:

绘图.py

import numpy as np
import matplotlib.pyplot as plt

def customplot():
    N = 5
    first_means = (20, 35, 30, 35, 27)
    first_std = (2, 3, 4, 1, 2)

    ind = np.arange(N)
    width = 0.35     

    fig, ax = plt.subplots()
    rects1 = ax.bar(ind, first_means, width, color='r', yerr=first_std)

    second_means = (25, 32, 34, 20, 25)
    second_std = (3, 5, 2, 3, 3)
    rects2 = ax.bar(ind + width, second_means, width, color='y', yerr=second_std)
    plt.show()

主.py

^{pr2}$

注意:在我的例子中,您的代码永远不会工作,因为窗口总是被阻塞的,而我建议的实现是最有效的。在

相关问题 更多 >

    热门问题