def __init__(self, ris_widget, pca, color=Qt.Qt.green, geometry=None, on_geometry_change=None): self._width_tck = None self._display_path = None self.layout = Qt.QFormLayout() self.rw = ris_widget self.pca_stuff = pca self.undo = None self.avg_width_tck = self._generate_pca_avg() spline_widget = Qt.QWidget() spline_widget.setLayout(self.layout) self.sv = Qt.QPushButton("View Spline") self.pca_button = Qt.QPushButton("Use PCA Average") self.undo_button = Qt.QPushButton("Undo") self.layout.addRow(self.sv) self.layout.addRow(self.pca_button) self.layout.addRow(self.undo_button) self.rw.flipbook.layout().addWidget(spline_widget) self.sv.clicked.connect(self._on_sv_clicked) self.pca_button.clicked.connect(self._on_pca_clicked) self.undo_button.clicked.connect(self._on_undo_clicked) super().__init__(ris_widget, color, geometry, on_geometry_change)
def __init__(self, rw, pca_stuff, avg_width_tck, save_dir): self.rw = rw self.flipbook = rw.flipbook self.flipbook.current_page_changed.connect(self.page_changed) self.display_path = None self.display_path1 = None self.pca_stuff = pca_stuff #self.spline_dict = spline_dict self.avg_width_tck = avg_width_tck self.undo = None self.layout = Qt.QFormLayout() spline_widget = Qt.QWidget() spline_widget.setLayout(self.layout) self.sv = Qt.QPushButton("View Spline") self.pca_button = Qt.QPushButton("Use PCA Average") self.undo_button = Qt.QPushButton("Undo") self.save_splines = Qt.QPushButton("Save Splines") self.save_dir = save_dir self.layout.addRow(self.sv) self.layout.addRow(self.pca_button) self.layout.addRow(self.undo_button) self.rw.flipbook.layout().addWidget(spline_widget) self.sv.clicked.connect(self._on_sv_clicked) self.pca_button.clicked.connect(self._on_pca_clicked) self.undo_button.clicked.connect(self._on_undo_clicked)
def __init__(self, parent=None): Qt.QWidget.__init__(self, parent) self.label = Qt.QLabel() formLayout = Qt.QFormLayout() layout = Qt.QGridLayout() layout.addWidget(self.label, 0, 0, 1, 3, QtCore.Qt.AlignCenter) self.setLayout(layout)
def __init__(self, parent=None): super(LaueFormWidget, self).__init__(parent) layout = Qt.QFormLayout(self) self._nCellsSpinBox = Qt.QSpinBox(self) self._nCellsSpinBox.setMinimum(2) layout.addRow("Number of unit cells:", self._nCellsSpinBox) self._oversamplingSpinBox = Qt.QSpinBox(self) self._oversamplingSpinBox.setMinimum(2) layout.addRow("Oversampling:", self._oversamplingSpinBox) self._hDoubleSpinBox = Qt.QDoubleSpinBox(self) layout.addRow("H:", self._hDoubleSpinBox) self._kDoubleSpinBox = Qt.QDoubleSpinBox(self) layout.addRow("K:", self._kDoubleSpinBox) pushButton = Qt.QPushButton("Run and Save", self) pushButton.clicked.connect(self.compute) layout.addRow(pushButton) self._sizeLabel = Qt.QLabel('') layout.addRow("Output size:", self._sizeLabel) self._updateSizeLabel() # Initialize displayed size self._nCellsSpinBox.valueChanged.connect(self._updateSizeLabel) self._oversamplingSpinBox.valueChanged.connect(self._updateSizeLabel)
def __init__(self, parent=None): super(LaueFormWidget, self).__init__(parent) self._result = None # Placeholder for results layout = Qt.QFormLayout(self) self._nCellsLineEdit = Qt.QLineEdit() layout.addRow("Number of unit cells:", self._nCellsLineEdit) self._oversamplingLineEdit = Qt.QLineEdit() layout.addRow("Oversampling:", self._oversamplingLineEdit) self._hLineEdit = Qt.QLineEdit() layout.addRow("H:", self._hLineEdit) self._kLineEdit = Qt.QLineEdit() layout.addRow("K:", self._kLineEdit) runPushButton = Qt.QPushButton("Run") runPushButton.clicked.connect(self.compute) layout.addRow(runPushButton) self._savePushButton = Qt.QPushButton("Save") self._savePushButton.clicked.connect(self.save) self._savePushButton.setEnabled(False) layout.addRow(self._savePushButton)
def __init__(self, parent=None): Qt.QWidget.__init__(self, parent) self.label = Qt.QLabel() self.lineEdit = Qt.QLineEdit("ABCDE") self.fontComboBox = Qt.QFontComboBox() self.sizeSpinBox = Qt.QDoubleSpinBox() self.sizeSpinBox.setMinimum(1.0) self.sizeSpinBox.setValue(12.0) saveButton = Qt.QPushButton(self.tr("Save")) self.lineEdit.textChanged.connect(self.updateImage) self.fontComboBox.currentFontChanged.connect(self.updateImage) self.sizeSpinBox.valueChanged.connect(self.updateImage) saveButton.clicked.connect(self.saveImage) formLayout = Qt.QFormLayout() formLayout.addRow(self.tr("&Text:"), self.lineEdit) formLayout.addRow(self.tr("&Font:"), self.fontComboBox) formLayout.addRow(self.tr("Font &Size:"), self.sizeSpinBox) layout = Qt.QGridLayout() layout.addWidget(self.label, 0, 0, 1, 3, QtCore.Qt.AlignCenter) layout.addLayout(formLayout, 1, 0, 1, 3) layout.addWidget(saveButton, 2, 1) self.setLayout(layout) self.updateImage() self.setWindowTitle(self.tr("Paint Text"))
def __init__(self, changed_signal, parent=None): super().__init__(parent) l = Qt.QFormLayout() self.setLayout(l) self.intervals = None self.fpss = None self.last_interval = None self.last_fps = None self._sample_count = None self.acquired_sample_count = 0 self.prev_t = None self.sample_count_spinbox = Qt.QSpinBox() self.sample_count_spinbox.setRange(2, 1024) self.sample_count_spinbox.valueChanged[int].connect( self._on_sample_count_spinbox_value_changed) l.addRow('Sample count:', self.sample_count_spinbox) fps_box = Qt.QHBoxLayout() fps_box.setSpacing(3) l.addRow(fps_box) self.rate_field = Qt.QLabel() self.rate_field.setFont(Qt.QFont('Courier')) rate_suffix = Qt.QLabel('fps') fps_box.addWidget(self.rate_field, alignment=Qt.Qt.AlignRight) fps_box.addWidget(rate_suffix, alignment=Qt.Qt.AlignLeft) fps_box.addSpacing(12) self.interval_field = Qt.QLabel() self.interval_field.setFont(Qt.QFont('Courier')) self.interval_suffix = Qt.QLabel() fps_box.addWidget(self.interval_field, alignment=Qt.Qt.AlignRight) fps_box.addWidget(self.interval_suffix, alignment=Qt.Qt.AlignLeft) self.sample_count = 60 changed_signal.connect(self.notify)
def __init__(self, expt_dir): ''' expt_dir - superfolder for experiment ''' self.rw = RisWidget() layout = Qt.QFormLayout() ME_widget = Qt.QWidget() ME_widget.setLayout(layout) self.edit = Qt.QPushButton("Edit Mask") layout.addRow(self.edit) self.nf = NoteField(parent=self.rw.qt_object) layout.addRow(self.nf) self.rw.flipbook.layout().addWidget(ME_widget) self.edit.clicked.connect(self._on_edit_clicked) self.rw.flipbook.pages_view.selectionModel().currentRowChanged.connect( self._on_page_change) self.file_globs = ['*bf.png', '*mask.png'] self.expt_dir = pathlib.Path(expt_dir) self.work_dir = self.expt_dir / 'work_dir' # Super folder for masks self.all_images, self.worm_positions = self.parse_inputs() self.editing = False self.working_file = None self.current_page = None # Search for annotation tsv tsvs = list(self.expt_dir.glob('*.tsv')) if len(tsvs) > 1: print('Warning: More than one tsv found') if len(tsvs) > 0: self.ann_fpath = tsvs[0] else: print('Warning: no tsv found') self.ann_fpath = None self.load_annotations() self.set_index(0) self.actions = [] self._add_action( 'prev_worm', Qt.Qt.Key_BracketLeft, lambda: self.load_next_worm(self.well_index, -1) ) # Changed these because I tended to accidentally hit side keys self._add_action('next_worm', Qt.Qt.Key_BracketRight, lambda: self.load_next_worm(self.well_index, 1)) self._add_action('Edit Mask', QtGui.QKeySequence('Ctrl+E'), self._on_edit_clicked) self.rw.qt_object.main_view_toolbar.addAction(self.actions[-1]) self._add_action('Goto Worm', QtGui.QKeySequence('Ctrl+G'), self.goto_label) self.rw.qt_object.main_view_toolbar.addAction(self.actions[-1]) self._add_action( 'Reload Masks', QtGui.QKeySequence('Ctrl+R'), lambda: self.load_next_worm(self.well_index, 0)) # TODO Fix. self.rw.qt_object.main_view_toolbar.addAction(self.actions[-1]) self.rw.show()
def add_property_rows(self, properties): form = Qt.QFormLayout() form.setContentsMargins(0, 0, 0, 0) form.setVerticalSpacing(5) form.setLabelAlignment(Qt.Qt.AlignRight) form.setFieldGrowthPolicy(Qt.QFormLayout.ExpandingFieldsGrow) self.setLayout(form) for row, prop in enumerate(properties): self.make_widgets_for_property(row, prop)
def add_property_rows(self, properties, property_types): form = Qt.QFormLayout() form.setContentsMargins(0, 0, 0, 0) form.setVerticalSpacing(5) form.setLabelAlignment(Qt.Qt.AlignRight) form.setFieldGrowthPolicy(Qt.QFormLayout.ExpandingFieldsGrow) self.setLayout(form) for row, property in enumerate(properties): type, readonly = property_types.get( property, ('String', True) ) # if the property type isn't in the dict, assume its a readonly string self.make_widgets_for_property(row, property, type, readonly)
def __init__(self, rw): self.rw = rw self.rw_warp = ris_widget.RisWidget() self.layout = Qt.QFormLayout() spline_widget = Qt.QWidget() spline_widget.setLayout(self.layout) self.warp = Qt.QPushButton("Warp Worm") self.clear = Qt.QPushButton("Clear") self.layout.addRow(self.warp) self.rw.flipbook.layout().addWidget(spline_widget) self.warp.clicked.connect(self._on_warp_clicked)
def __init__(self, rw, image_dir, out_dir): """ Parameters rw - RisWidget object to load images into image_dir - str/pathlib.Path to directory images for loading out_dir - str/pathlib.Path to directory for saving overlays """ self.rw = rw self.image_dir = pathlib.Path(image_dir) self.out_dir = pathlib.Path(out_dir) assert self.image_dir.exists() assert self.out_dir.exists() self.editing = False # To be low-maintenance, just add everything to the flipbook layout layout = Qt.QFormLayout() widget = Qt.QWidget() widget.setLayout(layout) self.rw.flipbook.layout().addWidget(widget) self.rw.add_painter() self.rw.flipbook_pages.clear() self.image_list = sorted(list(self.image_dir.glob('*.png'))) for image_path in self.image_list: image = freeimage.read(image_path) image_list = flipbook.ImageList() image_list.append(rw_image.Image(data=image, name=image_path.name)) if (self.out_dir / image_path.name).exists(): image_list.append( freeimage.read((self.out_dir / image_path.name))) else: image_shape = image.shape if len(image_shape) == 3: image_list.append(numpy.zeros_like(image)) else: new_shape = list(image_shape) + [3] image_list.append( numpy.zeros(shape=new_shape).astype('uint8')) rw.flipbook_pages.append(image_list) self.rw.painter.brush_size.value = 9 self.clear = self._add_button(layout, 'Clear All', self._on_clear_clicked) self.reload = self._add_button(layout, 'Reload Overlay', self._on_reload_clicked) self.save = self._add_button(layout, 'Save Overlay', self._on_save_clicked)
def __init__(self, scope, parent=None): super().__init__(scope, parent) self.limit_pixmaps_and_tooltips = LimitPixmapsAndToolTips() self.setWindowTitle('Stand') form = Qt.QFormLayout(self) form.setContentsMargins(0, 0, 0, 0) form.setVerticalSpacing(4) form.setLabelAlignment(Qt.Qt.AlignRight | Qt.Qt.AlignVCenter) form.setFieldGrowthPolicy(Qt.QFormLayout.ExpandingFieldsGrow) for property, widget_type, *widget_args in self.PROPERTIES: self.make_widgets_for_property(self.PROPERTY_ROOT + property, widget_type, widget_args) if hasattr(scope, 'job_runner'): form.addRow(status_widget.StatusWidget(scope))
def initGui(self): self.setWindowTitle("Polygon Solver") self._inputLine = Qt.QLineEdit(self) self._processButton = Qt.QPushButton(self) self._processButton.setText(u"Solve ax² + bx + c = 0") self._processButton.clicked.connect(self.processing) self._resultWidget = Qt.QLabel(self) widget = Qt.QWidget() layout = Qt.QFormLayout(widget) layout.addRow("Coefs a b c:", self._inputLine) layout.addRow("Solutions:", self._resultWidget) layout.addRow(self._processButton) self.setCentralWidget(widget)
def __init__(self): super().__init__() self.setWindowTitle('Widget-Info: exchange rate and weather') self.exchange_rate_USD = Qt.QLabel() self.exchange_rate_EUR = Qt.QLabel() self.weather_1 = Qt.QLabel() self.weather_2 = Qt.QLabel() self.weather_3 = Qt.QLabel() layout = Qt.QFormLayout() layout.addRow('USD:', self.exchange_rate_USD) layout.addRow('EUR:', self.exchange_rate_EUR) line = Qt.QFrame() line.setFrameShape(Qt.QFrame.HLine) line.setFrameShadow(Qt.QFrame.Sunken) line.setLineWidth(1) layout.addRow(line) layout.addRow('Магнитогорск:', self.weather_1) layout.addRow('Челябинск:', self.weather_2) layout.addRow('Екатеринбург:', self.weather_3) self.setLayout(layout) self.thread_exchange_rate_USD = ThreadExchangeRate(self, 'USD') self.thread_exchange_rate_USD.about_exchange_rate.connect( self.exchange_rate_USD.setText) self.thread_exchange_rate_USD.start() self.thread_exchange_rate_EUR = ThreadExchangeRate(self, 'EUR') self.thread_exchange_rate_EUR.about_exchange_rate.connect( self.exchange_rate_EUR.setText) self.thread_exchange_rate_EUR.start() self.thread_weather_1 = ThreadGetWeather(self, 'Магнитогорск') self.thread_weather_1.about_weather.connect(self.weather_1.setText) self.thread_weather_1.start() self.thread_weather_2 = ThreadGetWeather(self, 'Челябинск') self.thread_weather_2.about_weather.connect(self.weather_2.setText) self.thread_weather_2.start() self.thread_weather_3 = ThreadGetWeather(self, 'Екатеринбург') self.thread_weather_3.about_weather.connect(self.weather_3.setText) self.thread_weather_3.start()
def __init__(self, rw): ''' ''' self.rw = rw self.layout = Qt.QFormLayout() mask_widget = Qt.QWidget() mask_widget.setLayout(self.layout) self.edit = Qt.QPushButton("Edit Mask") self.layout.addRow(self.edit) self.rw.flipbook.layout().addWidget(mask_widget) self.edit.clicked.connect(self._on_edit_clicked) self.editing = False
def __init__(self, rw): self.rw = rw self.flipbook = rw.flipbook self.flipbook.current_page_changed.connect(self.page_changed) self.display_path = None self.display_path1 = None self.layout = Qt.QFormLayout() spline_widget = Qt.QWidget() spline_widget.setLayout(self.layout) self.sv = Qt.QPushButton("View Spline") self.layout.addRow(self.sv) self.rw.flipbook.layout().addWidget(spline_widget) self.sv.clicked.connect(self._on_sv_clicked)
def __init__(self, rw): self.rw = rw self.layout = Qt.QFormLayout() spline_widget = Qt.QWidget() spline_widget.setLayout(self.layout) self.edit = Qt.QPushButton("Edit Spline Points") self.clear = Qt.QPushButton("Clear") self.layout.addRow(self.edit) self.layout.addRow(self.clear) self.clear.setVisible(False) self.rw.flipbook.layout().addWidget(spline_widget) self.edit.clicked.connect(self._on_edit_clicked) self.points = [] self.editing = False
def __init__(self, *args, **kwargs): super(LaueFormWidget, self).__init__(*args, **kwargs) layout = Qt.QFormLayout(self) self._nCellsLineEdit = Qt.QLineEdit(self) layout.addRow("Number of unit cells:", self._nCellsLineEdit) self._oversamplingLineEdit = Qt.QLineEdit(self) layout.addRow("Oversampling:", self._oversamplingLineEdit) self._hLineEdit = Qt.QLineEdit(self) layout.addRow("H:", self._hLineEdit) self._kLineEdit = Qt.QLineEdit(self) layout.addRow("K:", self._kLineEdit) pushButton = Qt.QPushButton("Run and Save", self) pushButton.clicked.connect(self._runAndSaveClicked) layout.addRow(pushButton)
def __init__(self, parent=None): super(LaueFormWidget, self).__init__(parent) layout = Qt.QFormLayout(self) self._nCellsLineEdit = Qt.QLineEdit(self) layout.addRow("Number of unit cells:", self._nCellsLineEdit) self._oversamplingLineEdit = Qt.QLineEdit(self) layout.addRow("Oversampling:", self._oversamplingLineEdit) self._hLineEdit = Qt.QLineEdit(self) layout.addRow("H:", self._hLineEdit) self._kLineEdit = Qt.QLineEdit(self) layout.addRow("K:", self._kLineEdit) pushButton = Qt.QPushButton("Run and Save", self) pushButton.clicked.connect(self.compute) layout.addRow(pushButton)
def __init__(self, parent=None): super(LaueFormWidget, self).__init__(parent) layout = Qt.QFormLayout(self) self._nCellsSpinBox = Qt.QSpinBox(self) self._nCellsSpinBox.setMinimum(2) layout.addRow("Number of unit cells:", self._nCellsSpinBox) self._oversamplingSpinBox = Qt.QSpinBox(self) self._oversamplingSpinBox.setMinimum(2) layout.addRow("Oversampling:", self._oversamplingSpinBox) self._hDoubleSpinBox = Qt.QDoubleSpinBox(self) layout.addRow("H:", self._hDoubleSpinBox) self._kDoubleSpinBox = Qt.QDoubleSpinBox(self) layout.addRow("K:", self._kDoubleSpinBox) pushButton = Qt.QPushButton("Run and Save", self) pushButton.clicked.connect(self.compute) layout.addRow(pushButton)
def __init__(self, *args, **kwargs): super(LaueFormWidget, self).__init__(*args, **kwargs) self._processingThread = None # Placeholder for thread layout = Qt.QFormLayout(self) self._nCellsLineEdit = Qt.QLineEdit(self) layout.addRow("Number of unit cells:", self._nCellsLineEdit) self._oversamplingLineEdit = Qt.QLineEdit(self) layout.addRow("Oversampling:", self._oversamplingLineEdit) self._hLineEdit = Qt.QLineEdit(self) layout.addRow("H:", self._hLineEdit) self._kLineEdit = Qt.QLineEdit(self) layout.addRow("K:", self._kLineEdit) self._pushButton = Qt.QPushButton(self._RUN_AND_SAVE, self) self._pushButton.clicked.connect(self._runAndSaveClicked) layout.addRow(self._pushButton) self._sigProcessingDone.connect(self._processingDone)
def __init__(self, ris_widget, fields, parent=None): super().__init__(parent) self.setAttribute(Qt.Qt.WA_DeleteOnClose) layout = Qt.QFormLayout() layout.setFieldGrowthPolicy(layout.ExpandingFieldsGrow) self.setLayout(layout) self.fields = [] for field in fields: if isinstance(field, AnnotationField): self.fields.append(field) if isinstance(field.widget, Qt.QGroupBox): layout.addRow(field.widget) else: layout.addRow(field.name, field.widget) else: # assume a "group" of fields that has a fields and widget attribute self.fields.extend(field.fields) layout.addRow(field.widget) for field in self.fields: field.flipbook = ris_widget.flipbook self.flipbook = ris_widget.flipbook self.flipbook.current_page_changed.connect(self.update_fields) self.update_fields()
def __init__(self, parent=None): super(LaueFormWidget, self).__init__(parent) self._processingThread = None # Placeholder for the thread layout = Qt.QFormLayout(self) self._nCellsLineEdit = Qt.QLineEdit(self) layout.addRow("Number of unit cells:", self._nCellsLineEdit) self._oversamplingLineEdit = Qt.QLineEdit(self) layout.addRow("Oversampling:", self._oversamplingLineEdit) self._hLineEdit = Qt.QLineEdit(self) layout.addRow("H:", self._hLineEdit) self._kLineEdit = Qt.QLineEdit(self) layout.addRow("K:", self._kLineEdit) self._pushButton = Qt.QPushButton("Run and Save", self) self._pushButton.clicked.connect(self._runClicked) layout.addRow(self._pushButton) # Connect a method to handle the processing done self._sigProcessingDone.connect(self._processingDone)
from PyQt5 import Qt def get_horizontal_line(): line = Qt.QFrame() line.setFrameShape(Qt.QFrame.HLine) line.setFrameShadow(Qt.QFrame.Sunken) line.setLineWidth(1) return line app = Qt.QApplication([]) layout = Qt.QFormLayout() layout.addRow('First', Qt.QLineEdit()) layout.addRow('Last', Qt.QLineEdit()) layout.addRow(get_horizontal_line()) layout.addRow('Phone', Qt.QLineEdit()) layout.addRow(get_horizontal_line()) layout.addRow('Ok?', Qt.QCheckBox()) mw = Qt.QWidget() mw.setLayout(layout) mw.show() app.exec()
def setupUi(self, MainWindow): self.mainwindow = MainWindow MainWindow.setWindowTitle("CIL Viewer") MainWindow.resize(800, 600) # Contains response from open file dialog self.fn = None # Set linked state self.linked = True # Create link icon for inital load state. link_icon = QtGui.QIcon() link_icon.addPixmap(QtGui.QPixmap('icons/link.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off) # Set numpy data array for graph self.graph_numpy_input_data = None # Dockable window flag self.hasDockableWindow = False self.centralwidget = QtWidgets.QWidget(MainWindow) # Central widget layout self.main_widget_form_layout = QtWidgets.QGridLayout(self.centralwidget) # Add the 2D viewer widget self.viewerWidget = QVTKWidget(viewer=CILViewer2D, interactorStyle=vlink.Linked2DInteractorStyle) self.centralwidget.setStyleSheet("background-color: rgb(25,51,101)") self.linkButton2D = QtWidgets.QPushButton(self.viewerWidget) self.linkButton2D.setIcon(link_icon) self.linkButton2D.setGeometry(0, 0, 30, 30) self.linkButton2D.setStyleSheet("background-color: whitesmoke") self.linkButton2D.setToolTip("State: Linked. Toggle status of link between 2D and 3D viewers") self.linkButton2D.clicked.connect(self.linkViewers) self.main_widget_form_layout.addWidget(self.linkButton2D, 0,0,1,1) self.main_widget_form_layout.addItem(QtWidgets.QSpacerItem(1,1,QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Maximum),0,1,1,1) self.main_widget_form_layout.addWidget(self.viewerWidget,1,0,1,2) # Add the graph widget self.graphWidget = QVTKWidget(viewer=UndirectedGraph) self.graphDock = QtWidgets.QDockWidget(MainWindow) self.graphDock.setMinimumWidth(300) self.graphDock.setWidget(self.graphWidget) self.graphDock.setWindowTitle("Graph View") MainWindow.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.graphDock) # Add the 3D viewer widget self.viewer3DWidget = QVTKWidget(viewer=CILViewer, interactorStyle=vlink.Linked3DInteractorStyle) self.Dock3DContents = QtWidgets.QWidget() self.Dock3DContents.setStyleSheet("background-color: rgb(25,51,101)") f_layout3D = Qt.QFormLayout(self.Dock3DContents) self.Dock3D = QtWidgets.QDockWidget(MainWindow) self.Dock3D.setMinimumWidth(300) self.Dock3D.setWindowTitle("3D View") self.linkButton3D = QtWidgets.QPushButton(self.viewer3DWidget) self.linkButton3D.setIcon(link_icon) self.linkButton3D.setGeometry(0,0,30,30) self.linkButton3D.setStyleSheet("background-color: whitesmoke") self.linkButton3D.setToolTip("State: Linked. Toggle status of link between 2D and 3D viewers") self.linkButton3D.clicked.connect(self.linkViewers) f_layout3D.addWidget(self.linkButton3D) f_layout3D.addWidget(self.viewer3DWidget) self.Dock3D.setWidget(self.Dock3DContents) MainWindow.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.Dock3D) # Set central widget MainWindow.setCentralWidget(self.centralwidget) # Create menu actions openAction = QtWidgets.QAction("Open", MainWindow) openAction.setShortcut("Ctrl+O") openAction.triggered.connect(self.openFile) closeAction = QtWidgets.QAction("Close", MainWindow) closeAction.setShortcut("Ctrl+Q") closeAction.triggered.connect(self.close) #Create status bar self.statusbar = QtWidgets.QStatusBar(MainWindow) MainWindow.setStatusTip('Open file to begin visualisation...') MainWindow.setStatusBar(self.statusbar) # Initially link viewers self.linkedViewersSetup() self.link2D3D.enable() # Create the toolbar self.toolbar() # Add threading self.threadpool = QtCore.QThreadPool() self.e = ErrorObserver() # Add progress bar self.progressBar = QtWidgets.QProgressBar() self.progressBar.setMaximumWidth(250) self.progressBar.hide() self.statusbar.addPermanentWidget(self.progressBar) self.err = vtk.vtkFileOutputWindow() self.err.SetFileName("error.log") vtk.vtkOutputWindow.SetInstance(self.err)
def _update_form(self): payload = self.session.first_payload if not isinstance(payload, aioxmpp.forms.Data): self.ui.form_widget.hide() return self.ui.form_widget.show() if payload.title: self.ui.title.show() self.ui.title.setText(payload.title) else: self.ui.title.hide() if payload.instructions: self.ui.instructions.show() self.ui.instructions.setText("<p>{}</p>".format("</p><p>".join( map(html.escape, payload.instructions)))) else: self.ui.instructions.hide() if self.form_area is not None: self.ui.form_widget.layout().removeWidget(self.form_area) self.ui.form_widget.children().remove(self.form_area) self.form_area.deleteLater() self.form_area = Qt.QScrollArea() layout = Qt.QFormLayout() self.form_area.setLayout(layout) self.ui.form_widget.layout().addWidget(self.form_area) self.fieldmap = {} for field in payload.fields: if field.var == "FORM_TYPE": continue label, widget = None, None if field.type_ == aioxmpp.forms.FieldType.FIXED: label = Qt.QLabel(field.values[0]) layout.addRow(label) elif field.type_ in { aioxmpp.forms.FieldType.LIST_SINGLE, aioxmpp.forms.FieldType.LIST_MULTI }: label = Qt.QLabel(field.label) widget = Qt.QListWidget() for opt_value, opt_label in sorted(field.options.items()): item = Qt.QListWidgetItem(opt_label, widget) item.setData(Qt.Qt.UserRole, opt_value) widget.addItem(item) if field.type_.is_multivalued: widget.setSelectionMode( Qt.QAbstractItemView.MultiSelection) else: widget.setSelectionMode( Qt.QAbstractItemView.SingleSelection) layout.addRow(label, widget) elif field.type_ in { aioxmpp.forms.FieldType.TEXT_SINGLE, aioxmpp.forms.FieldType.JID_SINGLE }: label = Qt.QLabel(field.label) widget = Qt.QLineEdit() if field.values: widget.setText(field.values[0]) layout.addRow(label, widget) elif field.type_ in {aioxmpp.forms.FieldType.TEXT_PRIVATE}: label = Qt.QLabel(field.label) widget = Qt.QLineEdit() widget.setEchoMode(Qt.QLineEdit.Password) widget.setInputMethodHints(Qt.Qt.ImhHiddenText | Qt.Qt.ImhNoPredictiveText | Qt.Qt.ImhNoAutoUppercase) if field.values: widget.setText(field.values[0]) layout.addRow(label, widget) elif field.type_ in { aioxmpp.forms.FieldType.TEXT_MULTI, aioxmpp.forms.FieldType.JID_MULTI }: label = Qt.QLabel(field.label) widget = Qt.QTextEdit() widget.setText("\n".join(field.values)) widget.setAcceptRichText(False) layout.addRow(label, widget) else: self.fail("unhandled field type: {}".format(field.type_)) self.fieldmap[field.var] = label, widget
def __init__(self, *args, **kwargs): super(LaueMainWindow, self).__init__(*args, **kwargs) self._resultData = None self._processingThread = None self._sigProcessingDone.connect(self._processingDone) self.setWindowTitle("Laue simulation of a square 2D cristal") menuBar = self.menuBar() fileMenu = menuBar.addMenu("File") self._saveAction = fileMenu.addAction("Save", self._save, shortcut=Qt.QKeySequence.Save) self._saveAction.setEnabled(False) fileMenu.addSeparator() app = Qt.QApplication.instance() fileMenu.addAction("Quit", app.quit, shortcut=Qt.QKeySequence.Quit) centralWidget = Qt.QWidget(self) layout = Qt.QFormLayout(centralWidget) self._nCellsLineEdit = IntLineEdit(parent=centralWidget, bottom=1) self._nCellsLineEdit.setValue(10) self._nCellsLineEdit.setAlignment(Qt.Qt.AlignRight) self._nCellsLineEdit.textChanged.connect( self._updateOutputSize) # or editingFinished layout.addRow("Number of unit cells:", self._nCellsLineEdit) self._oversamplingLineEdit = IntLineEdit(parent=centralWidget, bottom=1) self._oversamplingLineEdit.setValue(5) self._oversamplingLineEdit.setAlignment(Qt.Qt.AlignRight) self._oversamplingLineEdit.textChanged.connect( self._updateOutputSize) # or editingFinished layout.addRow("Oversampling:", self._oversamplingLineEdit) layout.addRow(HorizontalLine()) self._hLineEdit = IntLineEdit(parent=centralWidget, bottom=0) self._hLineEdit.setValue(0) self._hLineEdit.setAlignment(Qt.Qt.AlignRight) layout.addRow("H:", self._hLineEdit) self._kLineEdit = IntLineEdit(parent=centralWidget, bottom=0) self._kLineEdit.setValue(0) self._kLineEdit.setAlignment(Qt.Qt.AlignRight) layout.addRow("K:", self._kLineEdit) self._pushButton = Qt.QPushButton("Run", centralWidget) self._pushButton.clicked.connect(self._runClicked) layout.addRow(self._pushButton) layout.addRow(HorizontalLine()) self._outputSizeLabel = Qt.QLabel(centralWidget) self._outputSizeLabel.setTextInteractionFlags( Qt.Qt.TextSelectableByMouse) # Allow copy self._outputSizeLabel.setAlignment(Qt.Qt.AlignRight) layout.addRow("Output size:", self._outputSizeLabel) label = Qt.QLabel("Result preview:", centralWidget) layout.addRow(label) self._resultLabel = Qt.QLabel(centralWidget) self._resultLabel.setText("<i>Press run to generate data</i>") self._resultLabel.setAlignment(Qt.Qt.AlignHCenter) layout.addRow(self._resultLabel) self._saveButton = Qt.QPushButton("Save", centralWidget) self._saveButton.clicked.connect(self._save) self._saveButton.setEnabled(False) layout.addRow(self._saveButton) centralWidget.setLayout(layout) self.setCentralWidget(centralWidget) # Init output size self._updateOutputSize()