Я пытаюсь создать графики с графическим интерфейсом Python и gnuplot.Я генерирую код на Python и отправляю его в gnuplot.Это в основном работает с передачей данных в gnuplot, но:
Недостатки:
- программа Python блокируется, пока вы не закроете gnuplot
- , вам придется загрузить / запустить gnuplotснова и снова каждый раз, когда вы делаете сюжет, который, кажется, занимает раздражающее дополнительное время (на медленных компьютерах)
Мои вопросы:
- как обеспечить адаптивность программы Python?
- есть ли способ запустить gnuplot один раз и продолжить его работу?
- как просто обновить терминал gnuplot, если есть новый сюжет?
Спасибо за подсказки и ссылки.
Вот мой код:
import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPlainTextEdit, QPushButton
import subprocess
class MyWindow(QWidget):
def __init__(self):
super(MyWindow,self).__init__()
self.setGeometry(100,100,400,200)
self.myTextEdit = QPlainTextEdit()
self.myTextEdit.setPlainText("plot sin(x)")
self.button = QPushButton('Plot code',self)
self.button.clicked.connect(self.on_button_click)
vbox = QVBoxLayout(self)
vbox.addWidget(self.myTextEdit)
vbox.addWidget(self.button)
self.setLayout(vbox)
@pyqtSlot()
def on_button_click(self):
gnuplot_str = self.myTextEdit.document().toPlainText() + "\n"
gnuplot_path = r'C:\Programs\gnuplot\bin\gnuplot.exe'
plot = subprocess.Popen([gnuplot_path,'-p'],stdin=subprocess.PIPE)
plot.communicate(gnuplot_str.encode())
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())