You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

197 lines
5.1 KiB

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMainWindow, QGridLayout, QLabel, QSpacerItem, QSizePolicy, QComboBox, QFileDialog
from plot_canvas import PlotCanvas
class Window(QMainWindow):
def __init__(self):
super().__init__()
self.container = QWidget(self)
self.grid = QGridLayout()
self.setCentralWidget(self.container)
self.container.setLayout(self.grid)
self.define_widgets()
self.set_widget_actions()
self.main_view()
self.setGeometry(0, 0, 500, 300)
self.setWindowTitle("Zebra")
self.show()
sys.exit(app.exec_())
def define_widgets(self):
''' Define widgets such as buttons. This must be done before setting widget actions.
Otherwise a widget action might try to modify a widget that is not defined yet.'''
# add empty label as spacer after buttons
self.grid.addWidget(QLabel(), 10,10)
self.button_zebra = self.make_button("1 Zebra", self.grid, 0, 0 )
self.button_back = self.make_button("Back", self.grid, 0,0)
self.button_dmc = self.make_button("2 DMC", self.grid, 0,1)
self.button_transfer = self.make_button("3 Transfer\nZebra-DMC-Laue", self.grid, 0,2)
self.m_range_label = QLabel("Measurement Range:")
self.grid.addWidget(self.m_range_label, 0, 2)
self.plot_canvas = PlotCanvas(width = 5, height = 5)
self.plot_canvas.setFixedWidth(400)
self.plot_canvas.setFixedHeight(300)
self.grid.addWidget(self.plot_canvas,0,1,3,1)
self.m_range_combo = QComboBox()
self.m_range_combo.addItems(["hkl", "-hkl", "hex", "cub"])
self.grid.addWidget(self.m_range_combo, 0,3)
self.add_data_label = QLabel("Add Data:")
self.grid.addWidget(self.add_data_label,1,2)
self.add_data_button = self.make_button("Open File", self.grid, 1, 3)
self.button_zebra13 = self.make_button("1.3", self.grid, 3,3)
self.button_dmc21 = self.make_button("2.1", self.grid, 0,1)
self.button_dmc22 = self.make_button("2.2", self.grid, 1,1)
def set_widget_actions(self):
# define button actions
self.button_zebra.clicked.connect(self.zebra_view)
self.button_back.clicked.connect(self.main_view)
self.button_dmc.clicked.connect(self.dmc_view)
self.button_transfer.clicked.connect(self.transfer_view)
self.m_range_combo.activated[str].connect(self.set_m_range)
self.add_data_button.clicked.connect(self.open_file)
self.button_zebra13.clicked.connect(self.zebra13_action)
self.button_dmc21.clicked.connect(self.dmc21_action)
self.button_dmc22.clicked.connect(self.dmc22_action)
def hide_all(self):
self.button_zebra.setHidden(True)
self.button_back.setHidden(True)
self.button_dmc.setHidden(True)
self.button_transfer.setHidden(True)
self.m_range_label.setHidden(True)
self.m_range_combo.setHidden(True)
self.plot_canvas.setHidden(True)
self.add_data_label.setHidden(True)
self.add_data_button.setHidden(True)
self.button_zebra13.setHidden(True)
self.button_dmc21.setHidden(True)
self.button_dmc22.setHidden(True)
def main_view(self):
self.hide_all()
self.button_zebra.setHidden(False)
self.button_dmc.setHidden(False)
self.button_transfer.setHidden(False)
def zebra_view(self):
self.hide_all()
self.button_back.setHidden(False)
self.plot_canvas.setHidden(False)
self.m_range_label.setHidden(False)
self.m_range_combo.setHidden(False)
self.add_data_label.setHidden(False)
self.add_data_button.setHidden(False)
self.button_zebra13.setHidden(False)
def dmc_view(self):
self.hide_all()
self.button_back.setHidden(False)
self.button_dmc21.setHidden(False)
self.button_dmc22.setHidden(False)
def transfer_view(self):
self.hide_all()
self.button_back.setHidden(False)
def open_file(self):
''' Corresponds to 1.2
TODO Right now this is just copy&pasted. Clean this up.'''
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
fileName, _ = QFileDialog.getOpenFileName(self,"QFileDialog.getOpenFileName()", "","All Files (*);;Python Files (*.py)", options=options)
if fileName:
print(fileName)
pass
def zebra13_action(self):
pass
def dmc21_action(self):
pass
def dmc22_action(self):
pass
def set_m_range(self, selection):
''' Corresponds to 1.1'''
print(selection)
pass
def make_button(self, text, grid, row, col):
"""Create a button in the grid and hide it."""
button = QPushButton(self)
button.setText(text)
grid.addWidget(button, row, col)
button.setHidden(True)
button.setFixedHeight(50)
button.setFixedWidth(150)
return button
if __name__ == '__main__':
app = QApplication(sys.argv)
hello = Window()
sys.exit(app.exec())