Гнуплот с Pyqt - PullRequest
       27

Гнуплот с Pyqt

0 голосов
/ 28 октября 2018

У меня есть этот проект, который включает в себя графический интерфейс, выполненный с PyQt и Gnuplot, оба связаны через графическое представление PyQt и терминал gnuplot x11 (общий через идентификатор окна).

Моя текущая цель - когда-то пользователь щелкнул левой кнопкой мыши где-нибудь на графике, чтобы выполнить какую-то функцию, которая будет что-то делать в отношении точки, по которой щелкнули.

Однако, когда я прикрепил сигнал "нажал" кГрафический вид и нажмите на график, функция не вызывается.

Я предполагаю, что сигнал подключен к x11, а не к графическому представлению.

Я могу решить эту проблему, создав поток, который спросит Gnuplot "print MOUSE_X, MOUSE_Y" и получит печать через stderr / stdout.

Мне было интересно, есть ли другой элегантный способ решения этой проблемы?(т. е. щелчок мыши по графику уведомит о щелчке графического представления).
Мой код содержит 2 основных исходных кода, оба на Python.

РЕДАКТИРОВАТЬ:
Первый файл, который обрабатывает связь с GnuPlot, (proc_inteface.py):

    def get_mouse_click(self):
         self.proc.stdin.write(b"print MOUSE_X, MOUSE_Y\n")# write to the gnuplot process
         return self.proc.stderr.readline() # for some reason the print goes to the stderr

Второй файл, который является GUI (MainWindow.py):

    def __init___(...):
        ...
        self.connect(self.graphicsView, SIGNAL("clicked()"), self.mouse_click)

    def mouse_click():
        x = self.proc_interface.get_mouse_click()
        #do somthing with the coordinates..

Как только я нажал на графическое представление, это не вызывается .. Как уже упоминалось, я уверен, что это потому, что терминал x11 блокирует щелчки.Любые предложения, чтобы обойти это?

...