【问题标题】:PyQtGraph - how do I close a plot window/close all plot windows?PyQtGraph - 如何关闭绘图窗口/关闭所有绘图窗口?
【发布时间】:2014-06-20 01:49:51
【问题描述】:

我试过 pg.close() 但没用,在手册中找不到。我在一个循环中生成图,所以我想在每个循环结束时将它们全部关闭(而是弹出一个新窗口打开,直到我的计算机发疯)。

【问题讨论】:

    标签: python pyqtgraph


    【解决方案1】:

    所有 Qt 小部件都有一个 close 方法。

    您可以使用QApplication.closeAllWindows关闭所有窗口。

    【讨论】:

    • 我就是这么想的——尽管奇怪的是,这只会给我留下空白的窗口,而不是破坏它们!
    • 如果您关闭窗口内唯一的小部件,那么是的,您将留下一个空窗口。确保您在窗口本身上调用close()
    【解决方案2】:

    下面显示的代码有一个退出方法。

    from pyqtgraph.Qt import QtGui, QtCore
    import pyqtgraph as pg
    import numpy as np
    import time
    import sys
    
    class guiThread(QtCore.QThread):
        def __init__(self):
            QtCore.QThread.__init__(self)
            self.status=True
            self.range=100
    
            #Add exit button connect and define a exit function like self.stop
            self.app = QtGui.QApplication(sys.argv)
            self.app.aboutToQuit.connect(self.stop)
    
            self.win = pg.GraphicsWindow(title="Example")
            self.win.resize(500,400)
            pg.setConfigOptions(antialias=True)
            self.px = self.win.addPlot(title="X plot")
            self.ckx = self.px.plot(pen='y')
            self.cdx = self.px.plot(pen='r')
            self.px.setXRange(0, self.range)
            self.px.setYRange(-180, 180)
            self.px.showGrid(x=True, y=True)
            self.timer = QtCore.QTimer()
            self.timer.timeout.connect(self.updateplot)
            self.timer.start(0.001)
            self.kx=np.zeros(self.range)
            self.dx=np.zeros(self.range)
        def updateplot(self):
            self.ckx.setData(self.kx)
            self.cdx.setData(self.dx)
        def append(self,sin):
            self.kx=np.roll(self.kx,-1)
            self.kx[-1]=sin[0]
            self.dx=np.roll(self.dx,-1)
            self.dx[-1]=int(sin[1])
        def stop(self):
            print "Exit" #exiy function
            self.status=False
            sys.exit()
        def run(self):
            print "run"
            while self.status:
                sin=np.random.randint(-180,180,2)
                print sin
                self.append(sin) 
                time.sleep(0.01)
    

    【讨论】:

      【解决方案3】:

      我自己也遇到了这个问题,在阅读了pyqtgraph source code 之后,发现窗口需要与情节本身一起关闭。例如,pg.close() 关闭绘图,pg.win.close() 关闭包含绘图的窗口。

      【讨论】:

        猜你喜欢
        • 2018-06-11
        • 2016-03-10
        • 1970-01-01
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        • 2020-01-15
        • 1970-01-01
        相关资源
        最近更新 更多