This commit is contained in:
Ruidy Nemausat 2019-12-17 20:10:32 +01:00
parent db3f145250
commit 623c456469
8 changed files with 430 additions and 470 deletions

1
.gitignore vendored
View file

@ -1,3 +1,4 @@
# Byte-compiled / optimized / DLL files # Byte-compiled / optimized / DLL files
__pycache__/ __pycache__/
*.ui *.ui
demo.py

View file

@ -26,4 +26,6 @@ Graphical User Interface allowing to:
## TO DO ## TO DO
https://stackoverflow.com/questions/49448990/pyqt-input-dialog-unexpected-type?rq=1
## BUGS ## BUGS

14
main.ui
View file

@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>798</width> <width>780</width>
<height>575</height> <height>622</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -26,15 +26,15 @@
<string>P65 XAFS Scan Manager</string> <string>P65 XAFS Scan Manager</string>
</property> </property>
<property name="currentIndex"> <property name="currentIndex">
<number>1</number> <number>0</number>
</property> </property>
<widget class="QWidget" name="scanParameterPage"> <widget class="QWidget" name="scanParameterPage">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>774</width> <width>756</width>
<height>483</height> <height>530</height>
</rect> </rect>
</property> </property>
<property name="accessibleName"> <property name="accessibleName">
@ -144,8 +144,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>774</width> <width>756</width>
<height>483</height> <height>530</height>
</rect> </rect>
</property> </property>
<attribute name="label"> <attribute name="label">

View file

@ -1,263 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QToolBox" name="toolBox">
<property name="whatsThis">
<string>P65 XAFS Scan Manager</string>
</property>
<property name="accessibleName">
<string>P65 XAFS Scan Manager</string>
</property>
<property name="accessibleDescription">
<string>P65 XAFS Scan Manager</string>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="scanParameterPage">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>776</width>
<height>465</height>
</rect>
</property>
<property name="accessibleName">
<string/>
</property>
<attribute name="label">
<string>Scan Parameters</string>
</attribute>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QPushButton" name="pushButton">
<property name="maximumSize">
<size>
<width>75</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Add</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QPushButton" name="pushButton_3">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>75</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Copy</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QPushButton" name="pushButton_2">
<property name="maximumSize">
<size>
<width>75</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Remove</string>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QPushButton" name="pushButton_7">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Clear</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="4">
<widget class="QListWidget" name="listWidget">
<item>
<property name="text">
<string>Scan #1</string>
</property>
</item>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QPushButton" name="pushButton_4">
<property name="text">
<string>Start</string>
</property>
</widget>
</item>
<item row="2" column="2" colspan="2">
<widget class="QPushButton" name="pushButton_5">
<property name="text">
<string>Pause</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QWidget" name="DataStoragePage">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>98</width>
<height>28</height>
</rect>
</property>
<attribute name="label">
<string>Data Storage</string>
</attribute>
<widget class="QSpinBox" name="spinBox">
<property name="geometry">
<rect>
<x>420</x>
<y>60</y>
<width>48</width>
<height>24</height>
</rect>
</property>
</widget>
<widget class="QWidget" name="layoutWidget">
<property name="geometry">
<rect>
<x>12</x>
<y>12</y>
<width>192</width>
<height>157</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="label_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>20</pointsize>
<weight>75</weight>
<bold>true</bold>
<kerning>true</kerning>
</font>
</property>
<property name="text">
<string>Data Storage</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QTableWidget" name="tableWidget_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>180</width>
<height>80</height>
</size>
</property>
<row>
<property name="text">
<string>Location</string>
</property>
</row>
<row>
<property name="text">
<string>Folder Name</string>
</property>
</row>
<column>
<property name="text">
<string>Value</string>
</property>
</column>
<item row="0" column="0">
<property name="text">
<string>UserBeamtime</string>
</property>
</item>
<item row="1" column="0">
<property name="text">
<string>P.I.</string>
</property>
</item>
</widget>
</item>
<item row="2" column="0">
<widget class="QPushButton" name="pushButton_6">
<property name="text">
<string>Save</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>22</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

View file

@ -13,13 +13,13 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class MainGui(object): class MainGui(object):
def setupUi(self, widget): def setupUi(self, widget):
widget.setObjectName("widget") widget.setObjectName("widget")
widget.resize(798, 575) widget.resize(780, 622)
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(widget) self.horizontalLayout_2 = QtWidgets.QHBoxLayout(widget)
self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.toolBox = QtWidgets.QToolBox(widget) self.toolBox = QtWidgets.QToolBox(widget)
self.toolBox.setObjectName("toolBox") self.toolBox.setObjectName("toolBox")
self.scanParameterPage = QtWidgets.QWidget() self.scanParameterPage = QtWidgets.QWidget()
self.scanParameterPage.setGeometry(QtCore.QRect(0, 0, 774, 483)) self.scanParameterPage.setGeometry(QtCore.QRect(0, 0, 756, 530))
self.scanParameterPage.setAccessibleName("") self.scanParameterPage.setAccessibleName("")
self.scanParameterPage.setObjectName("scanParameterPage") self.scanParameterPage.setObjectName("scanParameterPage")
self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.scanParameterPage) self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.scanParameterPage)
@ -63,7 +63,7 @@ class MainGui(object):
self.horizontalLayout_4.addLayout(self.gridLayout) self.horizontalLayout_4.addLayout(self.gridLayout)
self.toolBox.addItem(self.scanParameterPage, "") self.toolBox.addItem(self.scanParameterPage, "")
self.DataStoragePage = QtWidgets.QWidget() self.DataStoragePage = QtWidgets.QWidget()
self.DataStoragePage.setGeometry(QtCore.QRect(0, 0, 774, 483)) self.DataStoragePage.setGeometry(QtCore.QRect(0, 0, 756, 530))
self.DataStoragePage.setObjectName("DataStoragePage") self.DataStoragePage.setObjectName("DataStoragePage")
self.widget = QtWidgets.QWidget(self.DataStoragePage) self.widget = QtWidgets.QWidget(self.DataStoragePage)
self.widget.resize(192, 157) self.widget.resize(192, 157)
@ -118,7 +118,7 @@ class MainGui(object):
self.horizontalLayout_2.addWidget(self.toolBox) self.horizontalLayout_2.addWidget(self.toolBox)
self.retranslateUi(widget) self.retranslateUi(widget)
self.toolBox.setCurrentIndex(1) self.toolBox.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(widget) QtCore.QMetaObject.connectSlotsByName(widget)
def retranslateUi(self, widget): def retranslateUi(self, widget):

180
qexafs.py Normal file
View file

@ -0,0 +1,180 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'qexafs.ui'
#
# Created by: PyQt5 UI code generator 5.13.2
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class QexafsGui(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(470, 460)
self.horizontalLayout = QtWidgets.QHBoxLayout(Form)
self.horizontalLayout.setObjectName("horizontalLayout")
self.gridLayout = QtWidgets.QGridLayout()
self.gridLayout.setObjectName("gridLayout")
self.label = QtWidgets.QLabel(Form)
sizePolicy = QtWidgets.QSizePolicy(
QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(
self.label.sizePolicy().hasHeightForWidth())
self.label.setSizePolicy(sizePolicy)
font = QtGui.QFont()
font.setPointSize(20)
font.setBold(True)
font.setWeight(75)
font.setKerning(True)
self.label.setFont(font)
self.label.setObjectName("label")
self.gridLayout.addWidget(self.label, 0, 0, 1, 2)
self.tableWidget = QtWidgets.QTableWidget(Form)
sizePolicy = QtWidgets.QSizePolicy(
QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(
self.tableWidget.sizePolicy().hasHeightForWidth())
self.tableWidget.setSizePolicy(sizePolicy)
self.tableWidget.setMinimumSize(QtCore.QSize(0, 350))
self.tableWidget.setMaximumSize(QtCore.QSize(200, 16777215))
self.tableWidget.setAutoFillBackground(True)
self.tableWidget.setObjectName("tableWidget")
self.tableWidget.setColumnCount(1)
self.tableWidget.setRowCount(11)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(1, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(2, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(3, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(4, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(5, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(6, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(7, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(8, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(9, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setVerticalHeaderItem(10, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setHorizontalHeaderItem(0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setItem(0, 0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setItem(1, 0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setItem(2, 0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setItem(3, 0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setItem(4, 0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setItem(5, 0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setItem(6, 0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setItem(7, 0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setItem(8, 0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setItem(9, 0, item)
item = QtWidgets.QTableWidgetItem()
self.tableWidget.setItem(10, 0, item)
self.gridLayout.addWidget(self.tableWidget, 1, 0, 1, 2)
self.pushButton = QtWidgets.QPushButton(Form)
sizePolicy = QtWidgets.QSizePolicy(
QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(
self.pushButton.sizePolicy().hasHeightForWidth())
self.pushButton.setSizePolicy(sizePolicy)
self.pushButton.setObjectName("pushButton")
self.gridLayout.addWidget(self.pushButton, 2, 0, 1, 1)
self.pushButton_2 = QtWidgets.QPushButton(Form)
self.pushButton_2.setObjectName("pushButton_2")
self.gridLayout.addWidget(self.pushButton_2, 2, 1, 1, 1)
self.horizontalLayout.addLayout(self.gridLayout)
self.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout")
self.listWidget = QtWidgets.QListWidget(Form)
self.listWidget.setObjectName("listWidget")
self.verticalLayout.addWidget(self.listWidget)
self.pushButton_3 = QtWidgets.QPushButton(Form)
self.pushButton_3.setObjectName("pushButton_3")
self.verticalLayout.addWidget(self.pushButton_3)
self.horizontalLayout.addLayout(self.verticalLayout)
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "New Scan"))
self.label.setText(_translate("Form", "Scan Parameters"))
item = self.tableWidget.verticalHeaderItem(0)
item.setText(_translate("Form", "Energy"))
item = self.tableWidget.verticalHeaderItem(1)
item.setText(_translate("Form", "Edge "))
item = self.tableWidget.verticalHeaderItem(2)
item.setText(_translate("Form", "Start Scan"))
item = self.tableWidget.verticalHeaderItem(3)
item.setText(_translate("Form", "End Scan"))
item = self.tableWidget.verticalHeaderItem(4)
item.setText(_translate("Form", "Total Scan Time"))
item = self.tableWidget.verticalHeaderItem(5)
item.setText(_translate("Form", "Time per Point"))
item = self.tableWidget.verticalHeaderItem(6)
item.setText(_translate("Form", "Undulator Offset"))
item = self.tableWidget.verticalHeaderItem(7)
item.setText(_translate("Form", "Sample Name"))
item = self.tableWidget.verticalHeaderItem(8)
item.setText(_translate("Form", "Sample Position"))
item = self.tableWidget.verticalHeaderItem(9)
item.setText(_translate("Form", "Motor Position"))
item = self.tableWidget.verticalHeaderItem(10)
item.setText(_translate("Form", "Number of Scans"))
item = self.tableWidget.horizontalHeaderItem(0)
item.setText(_translate("Form", "Value"))
__sortingEnabled = self.tableWidget.isSortingEnabled()
self.tableWidget.setSortingEnabled(False)
item = self.tableWidget.item(0, 0)
item.setText(_translate("Form", "7112"))
item = self.tableWidget.item(1, 0)
item.setText(_translate("Form", "Fe_K"))
item = self.tableWidget.item(2, 0)
item.setText(_translate("Form", "150"))
item = self.tableWidget.item(3, 0)
item.setText(_translate("Form", "1000"))
item = self.tableWidget.item(4, 0)
item.setText(_translate("Form", "180"))
item = self.tableWidget.item(5, 0)
item.setText(_translate("Form", "0.1"))
item = self.tableWidget.item(6, 0)
item.setText(_translate("Form", "50"))
item = self.tableWidget.item(7, 0)
item.setText(_translate("Form", "Fe_foil"))
item = self.tableWidget.item(8, 0)
item.setText(_translate("Form", "0"))
item = self.tableWidget.item(9, 0)
item.setText(_translate("Form", "0"))
item = self.tableWidget.item(10, 0)
item.setText(_translate("Form", "1"))
self.tableWidget.setSortingEnabled(__sortingEnabled)
self.pushButton.setText(_translate("Form", "Add Scan"))
self.pushButton_2.setText(_translate("Form", "Cancel"))
self.pushButton_3.setText(_translate("Form", "Done"))

View file

@ -6,22 +6,15 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>230</width> <width>470</width>
<height>460</height> <height>460</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>Form</string> <string>New Scan</string>
</property>
<widget class="QWidget" name="">
<property name="geometry">
<rect>
<x>12</x>
<y>12</y>
<width>212</width>
<height>427</height>
</rect>
</property> </property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<item row="0" column="0" colspan="2"> <item row="0" column="0" colspan="2">
<widget class="QLabel" name="label"> <widget class="QLabel" name="label">
@ -200,12 +193,27 @@
<item row="2" column="1"> <item row="2" column="1">
<widget class="QPushButton" name="pushButton_2"> <widget class="QPushButton" name="pushButton_2">
<property name="text"> <property name="text">
<string>Cancel</string> <string>Clear</string>
</property> </property>
</widget> </widget>
</item> </item>
</layout> </layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QListWidget" name="listWidget"/>
</item>
<item>
<widget class="QPushButton" name="pushButton_3">
<property name="text">
<string>Done</string>
</property>
</widget> </widget>
</item>
</layout>
</item>
</layout>
</widget> </widget>
<resources/> <resources/>
<connections/> <connections/>

View file

@ -4,11 +4,37 @@
from EXAFS_Monitor.monitor_gui import MonitorWidget from EXAFS_Monitor.monitor_gui import MonitorWidget
import sys import sys
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow from PyQt5.QtWidgets import QApplication, QWidget
from main_gui import MainGui from main_gui import MainGui
from qexafs import QexafsGui
from functools import partial from functools import partial
class AddScan(QWidget, QexafsGui):
"""
Widget used to create new scans
"""
def __init__(self):
super().__init__()
self.setupUi(self)
self.pushButton.clicked.connect(self.save_scans)
self.pushButton_2.clicked.connect(self.clear)
def save_scans(self):
"""
Create list of scan
"""
line = [
f"{self.tableWidget.verticalHeaderItem(i).text()}: {self.tableWidget.item(i, 0).text()}" for i in range(11)]
self.listWidget.addItem(str(self.listWidget.count()+1)+", ".join(line))
def clear(self):
for line in range(11):
self.tableWidget.item(line, 0).setText('')
class XafsManager(QWidget, MainGui): class XafsManager(QWidget, MainGui):
""" """
Graphical-User Interface for P65 beamline Graphical-User Interface for P65 beamline
@ -21,7 +47,11 @@ class XafsManager(QWidget, MainGui):
super().__init__() super().__init__()
self.setupUi(self) self.setupUi(self)
# self.pushButton.clicked.connect(self.listWidget) self.pushButton.clicked.connect(self.add_scan)
def add_scan(self):
self.add = AddScan()
self.add.show()
# self.connect( # self.connect(
# self.loadLast, # self.loadLast,
@ -46,15 +76,17 @@ class XafsManager(QWidget, MainGui):
# SIGNAL("clicked()"), # SIGNAL("clicked()"),
# partial(self.clearScans, scanListe) # partial(self.clearScans, scanListe)
# ) # )
# Defines a single scan and returns the parameter as a dictionary object #
# def make_dict(self, scanListe): # def make_dict(self, scanListe):
# # Collect all the input # """
# Defines a single scan and returns the parameter as a dictionary object
# """
# edge_n = str(self.edge_name.text()) # edge_n = str(self.edge_name.text())
# if str(edge_n) == "": # if str(edge_n) == "":
# showMessageBox(self, "Edge Name") # showMessageBox(self, "Edge Name")
# dsPar = str(self.ds_param.text()) # # dsPar = str(self.ds_param.text())
# """if str(dsPar) == "": # # """if str(dsPar) == "":
# EXAFS_GUI_common.showMessageBox(self,"DS parameter")""" # # EXAFS_GUI_common.showMessageBox(self,"DS parameter")"""
# edge_e = str(self.edge_energy.text()) # edge_e = str(self.edge_energy.text())
# if str(edge_e) == "": # if str(edge_e) == "":
# showMessageBox(self, "Edge energy") # showMessageBox(self, "Edge energy")
@ -142,9 +174,9 @@ class XafsManager(QWidget, MainGui):
# return scanListe # return scanListe
def showMessageBox(self, missing): # def showMessageBox(self):
QMessageBox.information( # QMessageBox.information(
self, "Problem!!!", "Missing parameter: " + missing) # self, "Problem!!!", "Clicked")
def main(): def main():