как запустить виджет qt pyqtgraph из приложения python - PullRequest
0 голосов
/ 15 ноября 2018

У меня хорошо работает приложение на Python с графическим интерфейсом, созданным на tkinter.Мне нужно реализовать виджет qt из pyqtgraph, показывающий график (большие данные, поэтому libplot не может это сделать).Я импортирую необходимый материал 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 не обрабатываются.Поэтому я попытался вызвать обработчик событий Qt в цикле из python вместо вызова APP.exec _ ():

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

, но он работает так же (окно с графиком открывается, но останавливается при попытке доступа к другимвстроенные функции).Я думал о запуске виджета Qt в отдельном потоке, но если я не могу сделать это в цикле, то я думаю, что он также не будет выполняться в потоке.

Я прочитал это Python работает сQt, цикл обработки событий , но он не работает для меня.

Итак, вопрос в том, как правильно обработать виджет Qt из приложения tkinter (в отдельном окне) со всеми запущенными встроенными функциями?Я прав, что проблема вызвана неправильной обработкой событий qt из приложения tkinter?

...