PyQtGraph - 我该如何关闭一个绘图窗口/关闭所有绘图窗口?

6

我尝试使用pg.close(),但是没有起作用,手册中也找不到相关内容。我在循环中生成图表,因此我希望在每个循环结束时关闭它们(否则会一直弹出新窗口,直到我的电脑崩溃)。

3个回答

2

这正是我想的- 不过奇怪的是,这只会让我留下空白的窗口而不是销毁它们! - cjm2671
1
如果你关闭了窗口内唯一的小部件,那么是的,你会留下一个空窗口。确保你在窗口本身上调用 close() - Luke

1
下面显示的代码具有退出方法。
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)

1
我自己也遇到了这个问题,在阅读了pyqtgraph源代码后,发现需要关闭窗口和绘图本身。例如,pg.close()用于关闭绘图,pg.win.close()用于关闭包含绘图的窗口。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接