如何从python应用程序运行qt小部件pyqtgraph

时间:2018-11-15 19:58:49

标签: python pyside pyqtgraph

我在tkinter上使用GUI运行良好的python应用程序。我需要从显示图的pyqtgraph实现qt小部件(大量数据,因此matplot lib无法做到这一点)。 我导入了所需的Qt内容:

import pyqtgraph as pg
from pyqtgraph.Qt import QtCore, QtGui

并在tkinter类的某个位置执行以下代码,在新窗口中将其打开并显示图形:

def preview_show():
    APP = QtGui.QApplication([])
    ## Define a top-level widget to hold everything
    win = QtGui.QWidget()
    ## Create a grid layout to manage the widgets size and position
    layout = QtGui.QGridLayout()
    win.setLayout(layout)

    pl = pg.PlotWidget()
    pl.plot(self.DataSeries, pen=(255, 0, 0), name="Red curve")
    layout.addWidget(pl)

    win.show()
    APP.exec_()

然后,此小部件具有一些功能,可通过右键单击图形来访问它们,而我需要这些功能(例如导出图像)。但是,当我尝试单击任何一个功能时-python内核崩溃,错误代码为255。我有一个想法,即不会处理qt事件。因此,我尝试从python循环调用Qt事件处理程序,而不是调用APP.exec _():

while TRUE:
    APP.processEvents()
    time.sleep(0.002)

,但是它以相同的方式运行(带有图形的窗口会打开,但是在尝试访问其他内置函数时会冻结)。 我当时正在考虑在单独的线程中运行Qt小部件,但是如果我不能在循环中执行此操作,那么我认为它也不会在线程中运行。

我已经读过Python working with Qt, event loop,但对我来说不起作用。

问题是-如何在运行所有内置函数的情况下(在单独的窗口中)正确地从tkinter应用处理Qt小部件?我对由tkinter应用处理错误的qt事件引起的问题是否正确?

0 个答案:

没有答案