Skip to content
Snippets Groups Projects
Commit e794b883 authored by esarrey's avatar esarrey
Browse files

Separaion UI - plotter

parent ae9b6571
No related branches found
No related tags found
No related merge requests found
......@@ -6,6 +6,7 @@ from pymeasure.experiment import Results, Worker
from src.classes.plotter import Plotter
from src.classes.procedures.x_sweep import X_Sweep
from src.classes.ui import UI
log = logging.getLogger(__name__)
log.addHandler(logging.NullHandler())
......@@ -13,26 +14,28 @@ log.addHandler(logging.NullHandler())
if __name__ == "__main__":
console_log(log)
log.info("Constructing a RandomProcedure")
procedure = X_Sweep()
procedure.iterations = 10
ui = UI()
data_filename = 'random.csv'
log.info("Constructing the Results with a data file: %s" % data_filename)
results = Results(procedure, data_filename)
# log.info("Constructing a RandomProcedure")
# procedure = X_Sweep()
# procedure.iterations = 10
log.info("Constructing the Plotter")
plotter = Plotter(results)
plotter.start()
log.info("Started the Plotter")
# data_filename = 'random.csv'
# log.info("Constructing the Results with a data file: %s" % data_filename)
# results = Results(procedure, data_filename)
log.info("Constructing the Worker")
worker = Worker(results)
worker.start()
log.info("Started the Worker")
# log.info("Constructing the Plotter")
# plotter = Plotter(results, parent=ui)
# plotter.start()
# log.info("Started the Plotter")
log.info("Joining with the worker in at most 10 hours")
worker.join(timeout=36000)
log.info("Finished the measurement")
# log.info("Constructing the Worker")
# worker = Worker(results)
# worker.start()
# log.info("Started the Worker")
# log.info("Joining with the worker in at most 10 hours")
# worker.join(timeout=36000)
# log.info("Finished the measurement")
sys.exit(plotter.app.exec())
\ No newline at end of file
This diff is collapsed.
import sys
from time import sleep
import pyqtgraph as pg
from PyQt5 import QtCore
from pymeasure.display.Qt import QtWidgets
from pymeasure.thread import StoppableThread
from pymeasure.display.widgets import PlotWidget
from pymeasure.display.curves import ResultsCurve
class PlotUI(QtWidgets.QWidget):
def __init__(self, plotter, refresh_time=0.1, linewidth=1, parent=None):
super().__init__(parent)
self.plotter = plotter
self.refresh_time = refresh_time
columns = plotter.results.procedure.DATA_COLUMNS
self.setWindowTitle('miniMOKE')
self.plot_widget = PlotWidget("Plotter", columns, refresh_time=self.refresh_time,
check_status=False, linewidth=linewidth)
self.plot = self.plot_widget.plot
self.curve = ResultsCurve(plotter.results, columns[0], columns[1],
pen=pg.mkPen(color=pg.intColor(0), width=linewidth),
antialias=False)
self.plot.addItem(self.curve)
self.plot_widget.updated.connect(self.check_stop)
def quit(self, evt=None):
self.close()
self.plotter.stop()
def check_stop(self):
""" Checks if the Plotter should stop and exits the Qt main loop if so
"""
if self.plotter.should_stop():
QtCore.QCoreApplication.instance().quit()
from .ui import UI
class Plotter(StoppableThread):
def __init__(self, results, refresh_time=0.1, linewidth=1):
......@@ -16,7 +49,7 @@ class Plotter(StoppableThread):
def run(self):
self.app = QtWidgets.QApplication(sys.argv)
window = UI(self, refresh_time=self.refresh_time, linewidth=self.linewidth)
window = PlotUI(self, refresh_time=self.refresh_time, linewidth=self.linewidth)
self.app.aboutToQuit.connect(window.quit)
window.show()
self.app.exec()
......
......@@ -13,7 +13,7 @@ class X_Sweep(Procedure):
delay = FloatParameter('Delay Time', units='s', default=0.2)
seed = Parameter('Random Seed', default='12345')
DATA_COLUMNS = ['Iteration', 'Position', 'Voltage', 'Magnetic Field']
DATA_COLUMNS = ['Iteration', 'Voltage', 'Position', 'Magnetic Field']
def startup(self):
log.info("Setting the seed of the random number generator")
......
from PyQt5 import QtCore
from PyQt5.QtWidgets import QMenu, QStatusBar
import pyqtgraph as pg
from pymeasure.display.curves import ResultsCurve
from pymeasure.display.widgets import PlotWidget
from pymeasure.display.Qt import QtWidgets
from .widgets.directory import DirectoryLineEdit
class UI(QtWidgets.QMainWindow):
def __init__(self, plotter, refresh_time=0.1, linewidth=1, parent=None):
def __init__(self, parent=None):
super().__init__(parent)
self.plotter = plotter
self.refresh_time = refresh_time
columns = plotter.results.procedure.DATA_COLUMNS
self.setWindowTitle('miniMOKE')
self.main = QtWidgets.QWidget(self)
menuBar = self.menuBar()
# Creating menus using a QMenu object
fileMenu = QMenu("&File", self)
menuBar.addMenu(fileMenu)
# Creating menus using a title
editMenu = menuBar.addMenu("&Edit")
helpMenu = menuBar.addMenu("&Help")
self.statusbar = QStatusBar()
self.setStatusBar(self.statusbar)
self.statusbar.showMessage("Init window", 5000)
vbox = QtWidgets.QVBoxLayout(self.main)
vbox.setSpacing(0)
......@@ -32,30 +42,6 @@ class UI(QtWidgets.QMainWindow):
hbox.addWidget(self.directory)
vbox.addLayout(hbox)
self.plot_widget = PlotWidget("Plotter", columns, refresh_time=self.refresh_time,
check_status=False, linewidth=linewidth)
self.plot = self.plot_widget.plot
vbox.addWidget(self.plot_widget)
self.main.setLayout(vbox)
self.setCentralWidget(self.main)
self.main.show()
self.resize(800, 600)
self.curve = ResultsCurve(plotter.results, columns[0], columns[1],
pen=pg.mkPen(color=pg.intColor(0), width=linewidth),
antialias=False)
self.plot.addItem(self.curve)
self.plot_widget.updated.connect(self.check_stop)
def quit(self, evt=None):
self.close()
self.plotter.stop()
def check_stop(self):
""" Checks if the Plotter should stop and exits the Qt main loop if so
"""
if self.plotter.should_stop():
QtCore.QCoreApplication.instance().quit()
self.close()
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment