Предотвратить создание окна графика - график Pyqtgraph - PullRequest
0 голосов
/ 17 января 2019

Я создаю словарь элементов pyqtgraph.plot (), а затем добавляю эти элементы в окно PyQt с вкладками. Однако, как только эти объекты создаются, также создается окно. Я могу вызвать функцию win.hide (), чтобы избавиться от этих окон, но они все еще появляются изначально. Есть ли способ предотвратить появление окна при создании объектов графика?

import pyqtgraph as pg
#Generate dictionary containing pyqtgraph plots
plot_dict = {'plot_1': pg.plot(),
             'plot_2': pg.plot(),
             'plot_3': [pg.plot()'
              }
#Hide plot windows after they are generated
for plot in plot_dict:
    plot.win.hide()

По существу: есть ли флаг, который я могу включить в pg.plot (), который предотвращает отображение окон?

1 Ответ

0 голосов
/ 18 января 2019

plot() - это просто вспомогательная функция, которая показывает PlotWindow с.(см. участок ).PlotWindow - это класс, который наследуется от PlotWidget и отображается в окне.(Он также вызывает show() и выполняет другие действия, такие как установка заголовка и изменение размера).Оба из них создают QApplication, если он не существует с mkQApp().

fyi:

class PlotWindow(PlotWidget):
    def __init__(self, title=None, **kargs):
        mkQApp()
        self.win = QtGui.QMainWindow()
        PlotWidget.__init__(self, **kargs)
        self.win.setCentralWidget(self)
        for m in ['resize']:
            setattr(self, m, getattr(self.win, m))
        if title is not None:
            self.win.setWindowTitle(title)
        self.win.show()

и

def mkQApp():
    global QAPP
    inst = QtGui.QApplication.instance()
    if inst is None:
        QAPP = QtGui.QApplication([])
    else:
        QAPP = inst
    return QAPP

Таким образом, решение состоит в том, чтобыиспользуйте PlotWidget напрямую и звоните show() сами, когда захотите.Вы также должны создать QApplication самостоятельно.

import pyqtgraph as pg

if __name__ == '__main__':

    app = pg.mkQApp()

    plot_dict = {'plot_1': pg.PlotWidget(),
             'plot_2': pg.PlotWidget(),
             'plot_3': pg.PlotWidget()
              }

    plot_dict['plot_1'].show() # manually call show()

    app.exec()
...