import sys from PyQt5.QtWidgets import QApplication, QFormLayout, QLabel, QLineEdit, QWidget app = QApplication(sys.argv) window = QWidget() window.setWindowTitle("FORM") layout = QFormLayout() layout.addRow(QLabel("Name"), QLineEdit()) window.setLayout(layout) window.show() sys.exit(app.exec_())
def create_form(self, active_object_data: tuple): active_object, (name, tp) = active_object_data self.name_of_editable_obj = name assert tp is _Frame def accept(): try: active_object.pose.x = float(edit_obj['x'].text()) active_object.pose.y = float(edit_obj['y'].text()) active_object.pose.yaw = float( np.deg2rad(float(edit_obj['yaw'].text()))) new_type = None print(f"ACCEPT: {cam_obj}") for key in editable_values: print("Key - ", key) if key in [ "width", "height", "framerate", "distortion_parameters", "camera_matrix" ]: # cam obj if key in ["width", "height", "framerate"]: cam_obj[key] = int(edit_obj[key].text().split()[0]) elif key == "distortion_parameters": if not cam_obj.distortion_parameters: cam_obj["distortion_parameters"] = [] if self.distortion_view_one_string_mode: dk = edit_obj[f"distortion_parameters"].text( ).replace(" ", "").split(",") for idx, val in enumerate(dk): val = float(val) if len(cam_obj.distortion_parameters) < 5: cam_obj.distortion_parameters.append( val) else: cam_obj.distortion_parameters[ idx] = val else: for idx in range(5): val = float(edit_obj[ f"distortion_parameters_{idx}"].text(). split()[0]) if len(cam_obj.distortion_parameters) < 5: cam_obj.distortion_parameters.append( val) else: cam_obj.distortion_parameters[ idx] = val elif key == "camera_matrix": if not cam_obj.camera_matrix: cam_obj["camera_matrix"] = [] if not cam_obj.camera_matrix: for _ in range(3): cam_obj.camera_matrix.append([]) for row in range(3): for col in range(3): val = float( edit_obj[f"camera_matrix_{row}_{col}"]. text().split()[0]) if len(cam_obj.camera_matrix[row]) < 3: cam_obj.camera_matrix[row].append(val) else: cam_obj.camera_matrix[row][col] = val print('MATRIX1 ', cam_obj.camera_matrix) else: new_value = edit_obj[key].text().split()[0] if key == 'id' and len( edit_obj[key].text().split()) > 1: new_type = edit_obj[key].text().split()[1][1:-1] if key == 'type' and new_type: obj[key] = get_canonical_sign_name( new_type) # new_type continue if new_value.isdigit(): new_value = int(new_value) try: if isinstance(new_value, str): new_value = float(new_value) except ValueError: pass print(f"New value {new_value} for key {key}") obj[key] = new_value except Exception as e: msg = QMessageBox() msg.setIcon(QMessageBox.Critical) msg.setText(str(e)) msg.setWindowTitle("Error") msg.exec_() dialog.close() self.mapviewer.scene().update() self.update_layer_tree() def reject(): dialog.close() # work version info_object = self.dm.get_objects_by_name(name) del info_object[(name, tp)] _, type_object = list(info_object.keys())[0] obj = info_object[(name, type_object)] cam_obj = None dialog = QtWidgets.QDialog(self) dialog.setWindowTitle('Change attribute of object') # buttonbox buttonBox = QtWidgets.QDialogButtonBox( QtWidgets.QDialogButtonBox.Ok | QtWidgets.QDialogButtonBox.Cancel) buttonBox.accepted.connect(accept) buttonBox.rejected.connect(reject) # form formGroupBox = QGroupBox("Change attribute's object: {}".format("")) layout = QFormLayout() # editable_attrs = active_object.get_editable_attrs() edit_obj = {} combo_id = QComboBox(self) def change_combo_id(value): combo_id.clear() combo_id.addItems([ "{}/{}".format(i.id, i.type) for i in self.duckietown_types_apriltags[value] ]) combo_id.setEditText(str( self.duckietown_types_apriltags[value][0])) def change_type_from_combo(value: str): if 'type' in edit_obj: edit_obj['type'].setText(value.split()[1][1:-1]) x_edit = QLineEdit(str(active_object.pose.x)) y_edit = QLineEdit(str(active_object.pose.y)) yaw_edit = QLineEdit(str(np.rad2deg(active_object.pose.yaw))) edit_obj['x'] = x_edit edit_obj['y'] = y_edit edit_obj['yaw'] = yaw_edit layout.addRow(QLabel("{}.X".format("pose")), x_edit) layout.addRow(QLabel("{}.Y".format("pose")), y_edit) layout.addRow(QLabel("{}.yaw".format("pose")), yaw_edit) editable_values = obj.dict() print('ATTR SHOW: ', editable_values, name) for attr_name in sorted(editable_values.keys()): attr = editable_values[attr_name] new_edit = QLineEdit(str(attr)) edit_obj[attr_name] = new_edit if "vehicle" not in name and attr_name == 'id': type_id = list(self.duckietown_types_apriltags.keys())[0] for type_sign in self.duckietown_types_apriltags.keys(): try: if int(attr ) in self.duckietown_types_apriltags[type_sign]: type_id = type_sign break except: pass if "sign" not in name: for type_tag in self.duckietown_types_apriltags: combo_id.addItems([ "{}".format(i.id) for i in self.duckietown_types_apriltags[type_tag] ]) else: combo_id.addItems([ "{} ({})".format(i.id, i.type) for i in self.duckietown_types_apriltags[type_id] ]) combo_id.setLineEdit(new_edit) new_edit.setReadOnly(True) combo_id.setEditText(str(attr)) combo_id.currentTextChanged.connect(change_type_from_combo) layout.addRow(QLabel(attr_name), combo_id) elif attr_name == 'id': new_edit.setReadOnly(True) layout.addRow(QLabel("{}".format(attr_name)), new_edit) elif attr_name == "type": new_edit.setReadOnly(True) layout.addRow(QLabel("{}".format(attr_name)), new_edit) else: layout.addRow(QLabel("{}".format(attr_name)), new_edit) if "vehicle" in name: cam = self.dm.get_objects_by_name(name + "/camera") cam_obj: _Camera = cam[list(cam.keys())[0]] editable_values.update(cam_obj.dict()) print("Camera info ", type(cam), cam.keys(), list(cam.keys())[0], cam) print(cam_obj) layout.addRow(QHLine()) width_camera_edit = QLineEdit(str(cam_obj.width)) height_camera_edit = QLineEdit(str(cam_obj.height)) framerate_camera_edit = QLineEdit(str(cam_obj.framerate)) edit_obj.update({ "width": width_camera_edit, "height": height_camera_edit, "framerate": framerate_camera_edit }) layout.addRow(QLabel("{}.width".format("camera")), width_camera_edit) layout.addRow(QLabel("{}.height".format("camera")), height_camera_edit) layout.addRow(QLabel("{}.framerate".format("camera")), framerate_camera_edit) layout.addRow(QLabel("Camera Matrix")) grid_matrix = QGridLayout() grid_matrix.setColumnStretch(1, 4) grid_matrix.setColumnStretch(2, 4) for row in range(3): for col in range(3): if cam_obj.camera_matrix: # TODO: NEED TO TEST grid_line_edit = QLineEdit( str(cam_obj.camera_matrix[row][col])) else: grid_line_edit = QLineEdit("0") edit_obj[f"camera_matrix_{row}_{col}"] = grid_line_edit grid_matrix.addWidget(grid_line_edit, row, col) layout.addRow(grid_matrix) grid_distortion = QGridLayout() grid_distortion.setColumnStretch(1, 4) grid_distortion.setColumnStretch(2, 4) layout.addRow(QLabel("Camera Distortion: [k1, k2, p1, p2, k3]")) for idx in range(5): if cam_obj.distortion_parameters: grid_line_edit = QLineEdit( str(cam_obj.distortion_parameters[idx])) else: grid_line_edit = QLineEdit("0") edit_obj[f"distortion_parameters_{idx}"] = grid_line_edit grid_distortion.addWidget(grid_line_edit, 0, idx) layout.addRow(grid_distortion) layout.addRow(QHLine()) combo_groups = QComboBox(self) ##### DEV FOR GROUP #### groups = ["No chosen"] for ((nm, _), group) in self.dm.groups: groups.append(f"{nm} [{group.description}]") print(nm, group.description) combo_groups.addItems([i for i in groups]) combo_groups.setEditText("Choose group") combo_groups.currentTextChanged.connect(self.change_active_group) layout.addRow(QLabel("Choose group"), combo_groups) add_group = QPushButton("Add in group", self) add_group.clicked.connect(self.add_group_triggered) del_group = QPushButton("Del in group", self) del_group.clicked.connect(self.del_group_triggered) hl = QHBoxLayout() hl.addWidget(add_group) hl.addWidget(del_group) layout.addRow(hl) ######################## formGroupBox.setLayout(layout) # layout mainLayout = QVBoxLayout() mainLayout.addWidget(formGroupBox) mainLayout.addWidget(buttonBox) dialog.setLayout(mainLayout) dialog.exec_()
def __init__(self, parent, worker, config, configfile): QDialog.__init__(self, parent) self.worker = worker self.config = config self.configfile = configfile self.setStyleSheet("QGroupBox { font-weight: bold; } ") self.setWindowTitle('Settings') layout = QGridLayout() # Categories self.category_list = QListWidget() category_media = QListWidgetItem(getIcon('media-playback-start'), 'Media', self.category_list) category_sync = QListWidgetItem(getIcon('view-refresh'), 'Sync', self.category_list) category_ui = QListWidgetItem(getIcon('window-new'), 'User Interface', self.category_list) category_theme = QListWidgetItem(getIcon('applications-graphics'), 'Theme', self.category_list) self.category_list.setSelectionMode(QAbstractItemView.SingleSelection) self.category_list.setCurrentRow(0) self.category_list.setMaximumWidth( self.category_list.sizeHintForColumn(0) + 15) self.category_list.setFocus() self.category_list.currentItemChanged.connect(self.s_switch_page) # Media tab page_media = QWidget() page_media_layout = QVBoxLayout() page_media_layout.setAlignment(QtCore.Qt.AlignTop) # Group: Media settings g_media = QGroupBox('Media settings') g_media.setFlat(True) g_media_layout = QFormLayout() self.tracker_enabled = QCheckBox() self.tracker_enabled.toggled.connect(self.tracker_type_change) self.tracker_type = QComboBox() for (n, label) in utils.available_trackers: self.tracker_type.addItem(label, n) self.tracker_type.currentIndexChanged.connect(self.tracker_type_change) self.tracker_interval = QSpinBox() self.tracker_interval.setRange(5, 1000) self.tracker_interval.setMaximumWidth(60) self.tracker_process = QLineEdit() self.tracker_update_wait = QSpinBox() self.tracker_update_wait.setRange(0, 1000) self.tracker_update_wait.setMaximumWidth(60) self.tracker_update_close = QCheckBox() self.tracker_update_prompt = QCheckBox() self.tracker_not_found_prompt = QCheckBox() self.tracker_ignore_not_next = QCheckBox() g_media_layout.addRow('Enable tracker', self.tracker_enabled) g_media_layout.addRow('Tracker type', self.tracker_type) g_media_layout.addRow('Tracker interval (seconds)', self.tracker_interval) g_media_layout.addRow('Process name (regex)', self.tracker_process) g_media_layout.addRow('Wait before updating (seconds)', self.tracker_update_wait) g_media_layout.addRow('Wait until the player is closed', self.tracker_update_close) g_media_layout.addRow('Ask before updating', self.tracker_update_prompt) g_media_layout.addRow('Ask to add new shows', self.tracker_not_found_prompt) g_media_layout.addRow('Ignore if not next episode', self.tracker_ignore_not_next) g_media.setLayout(g_media_layout) # Group: Plex settings g_plex = QGroupBox('Plex Media Server') g_plex.setFlat(True) self.plex_host = QLineEdit() self.plex_port = QLineEdit() self.plex_user = QLineEdit() self.plex_passw = QLineEdit() self.plex_passw.setEchoMode(QLineEdit.Password) self.plex_obey_wait = QCheckBox() g_plex_layout = QGridLayout() g_plex_layout.addWidget(QLabel('Host and Port'), 0, 0, 1, 1) g_plex_layout.addWidget(self.plex_host, 0, 1, 1, 1) g_plex_layout.addWidget(self.plex_port, 0, 2, 1, 2) g_plex_layout.addWidget(QLabel('Use "wait before updating" time'), 1, 0, 1, 1) g_plex_layout.addWidget(self.plex_obey_wait, 1, 2, 1, 1) g_plex_layout.addWidget(QLabel('myPlex login (claimed server)'), 2, 0, 1, 1) g_plex_layout.addWidget(self.plex_user, 2, 1, 1, 1) g_plex_layout.addWidget(self.plex_passw, 2, 2, 1, 2) g_plex.setLayout(g_plex_layout) # Group: Library g_playnext = QGroupBox('Library') g_playnext.setFlat(True) self.player = QLineEdit() self.player_browse = QPushButton('Browse...') self.player_browse.clicked.connect(self.s_player_browse) lbl_searchdirs = QLabel('Media directories') lbl_searchdirs.setAlignment(QtCore.Qt.AlignTop) self.searchdirs = QListWidget() self.searchdirs_add = QPushButton('Add...') self.searchdirs_add.clicked.connect(self.s_searchdirs_add) self.searchdirs_remove = QPushButton('Remove') self.searchdirs_remove.clicked.connect(self.s_searchdirs_remove) self.searchdirs_buttons = QVBoxLayout() self.searchdirs_buttons.setAlignment(QtCore.Qt.AlignTop) self.searchdirs_buttons.addWidget(self.searchdirs_add) self.searchdirs_buttons.addWidget(self.searchdirs_remove) self.searchdirs_buttons.addWidget(QSplitter()) self.library_autoscan = QCheckBox() self.scan_whole_list = QCheckBox() self.library_full_path = QCheckBox() g_playnext_layout = QGridLayout() g_playnext_layout.addWidget(QLabel('Player'), 0, 0, 1, 1) g_playnext_layout.addWidget(self.player, 0, 1, 1, 1) g_playnext_layout.addWidget(self.player_browse, 0, 2, 1, 1) g_playnext_layout.addWidget(lbl_searchdirs, 1, 0, 1, 1) g_playnext_layout.addWidget(self.searchdirs, 1, 1, 1, 1) g_playnext_layout.addLayout(self.searchdirs_buttons, 1, 2, 1, 1) g_playnext_layout.addWidget(QLabel('Rescan Library at startup'), 2, 0, 1, 2) g_playnext_layout.addWidget(self.library_autoscan, 2, 2, 1, 1) g_playnext_layout.addWidget(QLabel('Scan through whole list'), 3, 0, 1, 2) g_playnext_layout.addWidget(self.scan_whole_list, 3, 2, 1, 1) g_playnext_layout.addWidget( QLabel('Take subdirectory name into account'), 4, 0, 1, 2) g_playnext_layout.addWidget(self.library_full_path, 4, 2, 1, 1) g_playnext.setLayout(g_playnext_layout) # Media form page_media_layout.addWidget(g_media) page_media_layout.addWidget(g_plex) page_media_layout.addWidget(g_playnext) page_media.setLayout(page_media_layout) # Sync tab page_sync = QWidget() page_sync_layout = QVBoxLayout() page_sync_layout.setAlignment(QtCore.Qt.AlignTop) # Group: Autoretrieve g_autoretrieve = QGroupBox('Autoretrieve') g_autoretrieve.setFlat(True) self.autoretrieve_off = QRadioButton('Disabled') self.autoretrieve_always = QRadioButton('Always at start') self.autoretrieve_days = QRadioButton('After n days') self.autoretrieve_days.toggled.connect(self.s_autoretrieve_days) self.autoretrieve_days_n = QSpinBox() self.autoretrieve_days_n.setRange(1, 100) g_autoretrieve_layout = QGridLayout() g_autoretrieve_layout.setColumnStretch(0, 1) g_autoretrieve_layout.addWidget(self.autoretrieve_off, 0, 0, 1, 1) g_autoretrieve_layout.addWidget(self.autoretrieve_always, 1, 0, 1, 1) g_autoretrieve_layout.addWidget(self.autoretrieve_days, 2, 0, 1, 1) g_autoretrieve_layout.addWidget(self.autoretrieve_days_n, 2, 1, 1, 1) g_autoretrieve.setLayout(g_autoretrieve_layout) # Group: Autosend g_autosend = QGroupBox('Autosend') g_autosend.setFlat(True) self.autosend_off = QRadioButton('Disabled') self.autosend_always = QRadioButton('Immediately after every change') self.autosend_minutes = QRadioButton('After n minutes') self.autosend_minutes.toggled.connect(self.s_autosend_minutes) self.autosend_minutes_n = QSpinBox() self.autosend_minutes_n.setRange(1, 1000) self.autosend_size = QRadioButton('After the queue reaches n items') self.autosend_size.toggled.connect(self.s_autosend_size) self.autosend_size_n = QSpinBox() self.autosend_size_n.setRange(2, 20) self.autosend_at_exit = QCheckBox('At exit') g_autosend_layout = QGridLayout() g_autosend_layout.setColumnStretch(0, 1) g_autosend_layout.addWidget(self.autosend_off, 0, 0, 1, 1) g_autosend_layout.addWidget(self.autosend_always, 1, 0, 1, 1) g_autosend_layout.addWidget(self.autosend_minutes, 2, 0, 1, 1) g_autosend_layout.addWidget(self.autosend_minutes_n, 2, 1, 1, 1) g_autosend_layout.addWidget(self.autosend_size, 3, 0, 1, 1) g_autosend_layout.addWidget(self.autosend_size_n, 3, 1, 1, 1) g_autosend_layout.addWidget(self.autosend_at_exit, 4, 0, 1, 1) g_autosend.setLayout(g_autosend_layout) # Group: Extra g_extra = QGroupBox('Additional options') g_extra.setFlat(True) self.auto_status_change = QCheckBox('Change status automatically') self.auto_status_change.toggled.connect(self.s_auto_status_change) self.auto_status_change_if_scored = QCheckBox( 'Change status automatically only if scored') self.auto_date_change = QCheckBox( 'Change start and finish dates automatically') g_extra_layout = QVBoxLayout() g_extra_layout.addWidget(self.auto_status_change) g_extra_layout.addWidget(self.auto_status_change_if_scored) g_extra_layout.addWidget(self.auto_date_change) g_extra.setLayout(g_extra_layout) # Sync layout page_sync_layout.addWidget(g_autoretrieve) page_sync_layout.addWidget(g_autosend) page_sync_layout.addWidget(g_extra) page_sync.setLayout(page_sync_layout) # UI tab page_ui = QWidget() page_ui_layout = QFormLayout() page_ui_layout.setAlignment(QtCore.Qt.AlignTop) # Group: Icon g_icon = QGroupBox('Notification Icon') g_icon.setFlat(True) self.tray_icon = QCheckBox('Show tray icon') self.tray_icon.toggled.connect(self.s_tray_icon) self.close_to_tray = QCheckBox('Close to tray') self.start_in_tray = QCheckBox('Start minimized to tray') self.tray_api_icon = QCheckBox('Use API icon as tray icon') self.notifications = QCheckBox( 'Show notification when tracker detects new media') g_icon_layout = QVBoxLayout() g_icon_layout.addWidget(self.tray_icon) g_icon_layout.addWidget(self.close_to_tray) g_icon_layout.addWidget(self.start_in_tray) g_icon_layout.addWidget(self.tray_api_icon) g_icon_layout.addWidget(self.notifications) g_icon.setLayout(g_icon_layout) # Group: Window g_window = QGroupBox('Window') g_window.setFlat(True) self.remember_geometry = QCheckBox('Remember window size and position') self.remember_columns = QCheckBox('Remember column layouts and widths') self.columns_per_api = QCheckBox( 'Use different visible columns per API') g_window_layout = QVBoxLayout() g_window_layout.addWidget(self.remember_geometry) g_window_layout.addWidget(self.remember_columns) g_window_layout.addWidget(self.columns_per_api) g_window.setLayout(g_window_layout) # Group: Lists g_lists = QGroupBox('Lists') g_lists.setFlat(True) self.filter_bar_position = QComboBox() filter_bar_positions = [(FilterBar.PositionHidden, 'Hidden'), (FilterBar.PositionAboveLists, 'Above lists'), (FilterBar.PositionBelowLists, 'Below lists')] for (n, label) in filter_bar_positions: self.filter_bar_position.addItem(label, n) self.inline_edit = QCheckBox('Enable in-line editing') g_lists_layout = QFormLayout() g_lists_layout.addRow('Filter bar position:', self.filter_bar_position) g_lists_layout.addRow(self.inline_edit) g_lists.setLayout(g_lists_layout) # UI layout page_ui_layout.addWidget(g_icon) page_ui_layout.addWidget(g_window) page_ui_layout.addWidget(g_lists) page_ui.setLayout(page_ui_layout) # Theming tab page_theme = QWidget() page_theme_layout = QFormLayout() page_theme_layout.setAlignment(QtCore.Qt.AlignTop) # Group: Episode Bar g_ep_bar = QGroupBox('Episode Bar') g_ep_bar.setFlat(True) self.ep_bar_style = QComboBox() ep_bar_styles = [(ShowsTableDelegate.BarStyleBasic, 'Basic'), (ShowsTableDelegate.BarStyle04, 'Trackma'), (ShowsTableDelegate.BarStyleHybrid, 'Hybrid')] for (n, label) in ep_bar_styles: self.ep_bar_style.addItem(label, n) self.ep_bar_style.currentIndexChanged.connect(self.s_ep_bar_style) self.ep_bar_text = QCheckBox('Show text label') g_ep_bar_layout = QFormLayout() g_ep_bar_layout.addRow('Style:', self.ep_bar_style) g_ep_bar_layout.addRow(self.ep_bar_text) g_ep_bar.setLayout(g_ep_bar_layout) # Group: Colour scheme g_scheme = QGroupBox('Color Scheme') g_scheme.setFlat(True) col_tabs = [('rows', '&Row highlights'), ('progress', '&Progress widget')] self.colors = {} self.colors['rows'] = [('is_playing', 'Playing'), ('is_queued', 'Queued'), ('new_episode', 'New Episode'), ('is_airing', 'Airing'), ('not_aired', 'Unaired')] self.colors['progress'] = [('progress_bg', 'Background'), ('progress_fg', 'Watched bar'), ('progress_sub_bg', 'Aired episodes'), ('progress_sub_fg', 'Stored episodes'), ('progress_complete', 'Complete')] self.color_buttons = [] self.syscolor_buttons = [] g_scheme_layout = QGridLayout() tw_scheme = QTabWidget() for (key, tab_title) in col_tabs: page = QFrame() page_layout = QGridLayout() col = 0 # Generate widgets from the keys and values for (key, label) in self.colors[key]: self.color_buttons.append(QPushButton()) # self.color_buttons[-1].setStyleSheet('background-color: ' + getColor(self.config['colors'][key]).name()) self.color_buttons[-1].setFocusPolicy(QtCore.Qt.NoFocus) self.color_buttons[-1].clicked.connect( self.s_color_picker(key, False)) self.syscolor_buttons.append(QPushButton('System Colors')) self.syscolor_buttons[-1].clicked.connect( self.s_color_picker(key, True)) page_layout.addWidget(QLabel(label), col, 0, 1, 1) page_layout.addWidget(self.color_buttons[-1], col, 1, 1, 1) page_layout.addWidget(self.syscolor_buttons[-1], col, 2, 1, 1) col += 1 page.setLayout(page_layout) tw_scheme.addTab(page, tab_title) g_scheme_layout.addWidget(tw_scheme) g_scheme.setLayout(g_scheme_layout) # UI layout page_theme_layout.addWidget(g_ep_bar) page_theme_layout.addWidget(g_scheme) page_theme.setLayout(page_theme_layout) # Content self.contents = QStackedWidget() for page in (page_media, page_sync, page_ui, page_theme): scrollable_page = QScrollArea() scrollable_page.setWidgetResizable(True) scrollable_page.setWidget(page) self.contents.addWidget(scrollable_page) if pyqt_version != 5: self.contents.layout().setMargin(0) # Bottom buttons bottombox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Apply | QDialogButtonBox.Cancel) bottombox.accepted.connect(self.s_save) bottombox.button(QDialogButtonBox.Apply).clicked.connect(self._save) bottombox.rejected.connect(self.reject) # Main layout finish layout.addWidget(self.category_list, 0, 0, 1, 1) layout.addWidget(self.contents, 0, 1, 1, 1) layout.addWidget(bottombox, 1, 0, 1, 2) layout.setColumnStretch(1, 1) self._load() self.update_colors() self.setLayout(layout)
def addComponents(self): """ sets the mainLayout for this class and adds components into it. :return: """ # mainLayout self.mainLayout = QVBoxLayout() self.setLayout(self.mainLayout) # title self.lblTitle = QLabel("Simple Converter") self.mainLayout.addWidget(self.lblTitle) # comboCategoryChooser self.lblCategoryChooser = QLabel("Choose A Category...") self.comboCategoryChooser = QComboBox() self.comboCategoryChooser.addItems(["Volumes", "Distances", "Weights", "Temperatures", "Areas" , "Times" ]) self.mainLayout.addWidget(self.lblCategoryChooser) self.mainLayout.addWidget(self.comboCategoryChooser) # control self.controlWidget = QWidget() self.controlLayout = QHBoxLayout() self.controlWidget.setLayout(self.controlLayout) self.mainLayout.addWidget(self.controlWidget) # comboFrom self.widgetFrom = QWidget() self.layoutFrom = QFormLayout() self.widgetFrom.setLayout(self.layoutFrom) self.controlLayout.addWidget(self.widgetFrom) # label , combo and lineEdit self.lblFrom = QLabel("From") self.comboFrom = QComboBox() self.editFrom = QLineEdit() self.layoutFrom.addRow(self.lblFrom, self.comboFrom) self.layoutFrom.addRow(QLabel(), self.editFrom) self.comboFrom.addItems(self.data[self.comboCategoryChooser.currentText()]) # comboTo self.widgetTo = QWidget() self.layoutTo = QFormLayout() self.widgetTo.setLayout(self.layoutTo) self.controlLayout.addWidget(self.widgetTo) # label , combo and lineEdit self.lblTo = QLabel("To") self.comboTo = QComboBox() self.editTo = QLineEdit() self.layoutTo.addRow(self.lblTo, self.comboTo) self.layoutTo.addRow(QLabel(), self.editTo) self.comboTo.addItems(self.data[self.comboCategoryChooser.currentText()]) # buttons self.widgetButtons = QWidget() self.layoutButtons = QHBoxLayout() self.widgetButtons.setLayout(self.layoutButtons) self.mainLayout.addWidget(self.widgetButtons) # btnConvert, btnReset self.btnConvert = QPushButton("Convert") self.btnReset = QPushButton("Reset") self.layoutButtons.addWidget(self.btnConvert) self.layoutButtons.addWidget(self.btnReset)
def __init__(self, main): """ Class to provide all methods to insert movie in database. :param main: Reference for main windows. """ super(InsertMovie, self).__init__() self.session = DB.get_session() self.movie = None self.cb_categories = [] self.main = main windows_title = texts.insert + ' ' + texts.movie_p self.setWindowTitle(windows_title) width = int(0.95 * main.frameSize().width()) height = int(0.8 * main.frameSize().height()) self.setGeometry(0, 0, width, height) self.tb_width = (0.5 * width) - 50 self.subwindow = QWidget() p = self.palette() p.setColor(self.backgroundRole(), QColor(230, 230, 250)) self.setPalette(p) self.setWidget(self.subwindow) self.vbox_main = QVBoxLayout(self.subwindow) # Search in IMDB self.pb_search_confirm_imdb = pb_create(texts.pb_imdb_search_confirm, height=25, width=200) self.pb_search_confirm_imdb.setToolTip(texts.imdb_search_tt) self.pb_search_confirm_imdb.setShortcut('CTRL+Alt+I') self.pb_search_confirm_imdb.clicked.connect(self.search_confirmed_imdb) self.pb_search_confirm_ad = pb_create(texts.pb_ad_search_confirm, height=25, width=300) self.pb_search_confirm_ad.setToolTip(texts.ad_search_tt) self.pb_search_confirm_ad.setShortcut('CTRL+Alt+D') self.pb_search_confirm_ad.clicked.connect(self.search_confirmed_ad) self.lb_imdb_url = QLabel(texts.lb_search_imdb) self.lb_imdb_url.setEnabled(False) self.lb_imdb_url.setHidden(True) self.le_imdb_url = le_create(tooltip=texts.imdb_search_tt) self.le_imdb_url.setEnabled(False) self.le_imdb_url.setHidden(True) self.lb_ad_url = QLabel(texts.lb_search_ad) self.lb_ad_url.setEnabled(False) self.lb_ad_url.setHidden(True) self.le_ad_url = le_create(tooltip=texts.ad_search_tt) self.le_ad_url.setEnabled(False) self.le_ad_url.setHidden(True) self.pb_search_imdb = pb_create(texts.pb_imdb_ad_search, height=25, width=200) self.pb_search_imdb.clicked.\ connect(lambda type: self.set_movie_scrapping('imdb')) self.pb_search_imdb.setShortcut('CTRL+Shift+I') self.pb_search_imdb.setEnabled(False) self.pb_search_imdb.setHidden(True) self.pb_search_ad = pb_create(texts.pb_imdb_ad_search, height=25, width=200) self.pb_search_ad.clicked.connect( lambda type: self.set_movie_scrapping('ad')) self.pb_search_ad.setShortcut('CTRL+Shift+A') self.pb_search_ad.setEnabled(False) self.pb_search_ad.setHidden(True) self.hbox_search = hbox_create([ self.pb_search_confirm_imdb, self.lb_imdb_url, self.le_imdb_url, self.pb_search_confirm_ad, self.lb_ad_url, self.le_ad_url ]) self.hbox_search.setContentsMargins(20, 10, 20, 0) self.hbox_pb_search = hbox_create([]) self.hbox_pb_search.setContentsMargins(20, 0, 20, 0) self.line = line_h_create('2px', '#000000') self.vbox_main.addLayout(self.hbox_search) self.vbox_main.addLayout(self.hbox_pb_search) self.vbox_main.addWidget(self.line) # Form Layout 1 self.fm_1 = QFormLayout() self.fm_1.setContentsMargins(20, 20, 20, 20) self.fm_1.setSpacing(10) # Title self.lb_title = QLabel(texts.title_s) self.le_title = le_create(255) self.fm_1.setWidget(0, QFormLayout.LabelRole, self.lb_title) self.fm_1.setWidget(0, QFormLayout.FieldRole, self.le_title) # Year self.lb_year = QLabel(texts.year_s) self.le_year = le_create(4) self.fm_1.setWidget(1, QFormLayout.LabelRole, self.lb_year) self.fm_1.setWidget(1, QFormLayout.FieldRole, self.le_year) # Media self.lb_media = QLabel(texts.media_s) media = db_select_all(self.session, Media) self.cb_media = cb_create() populate_combobox(self.cb_media, media) self.fm_1.setWidget(2, QFormLayout.LabelRole, self.lb_media) self.fm_1.setWidget(2, QFormLayout.FieldRole, self.cb_media) # Category 1 category = db_select_all(self.session, Category) self.lb_category_1 = QLabel(texts.category_1) self.cb_category_1 = cb_create() populate_combobox(self.cb_category_1, category) self.fm_1.setWidget(3, QFormLayout.LabelRole, self.lb_category_1) self.fm_1.setWidget(3, QFormLayout.FieldRole, self.cb_category_1) # Box box = db_select_all(self.session, Box) self.lb_box = QLabel(texts.box) self.cb_box = cb_create() populate_combobox(self.cb_box, box) self.fm_1.setWidget(4, QFormLayout.LabelRole, self.lb_box) self.fm_1.setWidget(4, QFormLayout.FieldRole, self.cb_box) # Poster self.lb_poster = QLabel(texts.poster) self.le_poster = le_create(255) self.fm_1.setWidget(5, QFormLayout.LabelRole, self.lb_poster) self.fm_1.setWidget(5, QFormLayout.FieldRole, self.le_poster) # Form Layout 2 self.fm_2 = QFormLayout() self.fm_2.setContentsMargins(20, 20, 20, 20) self.fm_2.setSpacing(10) # Original Title self.lb_original_title = QLabel(texts.original_title_s) self.le_original_title = le_create(255) self.fm_2.setWidget(0, QFormLayout.LabelRole, self.lb_original_title) self.fm_2.setWidget(0, QFormLayout.FieldRole, self.le_original_title) # Director director = db_select_all(self.session, Director) self.lb_director = QLabel(texts.director_s) self.cb_director = cb_create() populate_combobox(self.cb_director, director) self.fm_2.setWidget(1, QFormLayout.LabelRole, self.lb_director) self.fm_2.setWidget(1, QFormLayout.FieldRole, self.cb_director) self.lb_time = QLabel(texts.lb_time) self.le_time = le_create(10, texts.time_tt) self.fm_2.setWidget(2, QFormLayout.LabelRole, self.lb_time) self.fm_2.setWidget(2, QFormLayout.FieldRole, self.le_time) # Category 2 category = db_select_all(self.session, Category) self.lb_category_2 = QLabel(texts.category_1) self.cb_category_2 = cb_create() populate_combobox(self.cb_category_2, category) self.fm_2.setWidget(3, QFormLayout.LabelRole, self.lb_category_2) self.fm_2.setWidget(3, QFormLayout.FieldRole, self.cb_category_2) # KeyWord keyword = db_select_all(self.session, Keyword) self.lb_keyword = QLabel(texts.keyword) self.cb_keyword = cb_create() populate_combobox(self.cb_keyword, keyword) self.fm_2.setWidget(4, QFormLayout.LabelRole, self.lb_keyword) self.fm_2.setWidget(4, QFormLayout.FieldRole, self.cb_keyword) # Web URL self.lb_web_url = QLabel(texts.lb_url) self.le_web_url = le_create(255) self.fm_2.setWidget(5, QFormLayout.LabelRole, self.lb_web_url) self.fm_2.setWidget(5, QFormLayout.FieldRole, self.le_web_url) # Horizontal Layout for Frame layout self.hbox_fms = hbox_create([]) self.hbox_fms.addLayout(self.fm_1) self.hbox_fms.addLayout(self.fm_2) self.vbox_main.addLayout(self.hbox_fms) # Cast Summary self.hbox_summary_cast = hbox_create([]) self.hbox_summary_cast.setContentsMargins(20, 0, 20, 0) self.vbox_summary = QVBoxLayout() # Summary self.lb_summary = QLabel(texts.summary_s) self.le_summary = QTextEdit() self.vbox_summary.addWidget(self.lb_summary) self.vbox_summary.addWidget(self.le_summary) self.vbox_summary.setSpacing(20) self.hbox_summary_cast.addLayout(self.vbox_summary) self.hbox_summary_cast.setSpacing(20) # Cast Label Button self.vbox_cast = QVBoxLayout() self.lb_cast = QLabel(texts.cast_s) self.pb_add_row = QPushButton('+') self.pb_add_row.setToolTip(texts.pb_add_row_tt) self.pb_add_row.clicked.connect(self.table_add_rows) self.pb_add_row.setShortcut('Ctrl+T') self.hbox_cast = hbox_create([self.lb_cast, self.pb_add_row]) spacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.hbox_cast.addItem(spacer) self.vbox_cast.addLayout(self.hbox_cast) # Cast Table self.table = QTableWidget() self.table.setColumnCount(4) self.headers = [ texts.actor_s, texts.character_s, texts.order, texts.star.capitalize(), ] self.table.setHorizontalHeaderLabels(self.headers) self.table.setColumnWidth(0, 0.30 * self.tb_width) self.table.setColumnWidth(1, 0.40 * self.tb_width) self.table.setColumnWidth(2, 0.15 * self.tb_width) self.table.setColumnWidth(3, 0.15 * self.tb_width) self.rows = 0 self.cb_actor = [] self.cb_character = [] self.le_order = [] self.chbox_star = [] self.table_add_rows() self.vbox_cast.addWidget(self.table) self.hbox_summary_cast.addLayout(self.vbox_cast) self.vbox_main.addLayout(self.hbox_summary_cast) # Buttons Save Clear self.grid_layout = QGridLayout() self.grid_layout.setContentsMargins(10, 10, 10, 10) self.grid_layout.setSpacing(10) self.pb_save = pb_create(texts.pb_save, height=40) self.pb_save.clicked.connect(self.insert_movie) self.pb_save.setShortcut('Ctrl+S') self.grid_layout.addWidget(self.pb_save, 0, 0, 1, 1) self.pb_clear = pb_create(texts.pb_clear, height=40) self.pb_clear.clicked.connect(self.clear) self.pb_clear.setShortcut('Ctrl+L') self.grid_layout.addWidget(self.pb_clear, 0, 1, 1, 1) self.pb_help = pb_create(texts.pb_help, height=40) self.pb_help.clicked.connect(self.help) self.pb_help.setShortcut('Ctrl+H') self.grid_layout.addWidget(self.pb_help, 0, 2, 1, 1) self.pb_leave = pb_create(texts.pb_leave, height=40) self.pb_leave.clicked.connect(self.close) self.pb_leave.setShortcut('Ctrl+Q') self.grid_layout.addWidget(self.pb_leave, 0, 3, 1, 1) self.vbox_main.addLayout(self.grid_layout) # Tab Order self.le_title.setFocus() self.setTabOrder(self.le_title, self.le_original_title) self.setTabOrder(self.le_original_title, self.le_year) self.setTabOrder(self.le_year, self.cb_director) self.setTabOrder(self.cb_media, self.le_time) self.setTabOrder(self.le_time, self.cb_category_1) self.setTabOrder(self.cb_category_1, self.cb_category_2) self.setTabOrder(self.cb_category_2, self.cb_box) self.setTabOrder(self.cb_box, self.cb_keyword) self.setTabOrder(self.cb_keyword, self.le_poster) self.setTabOrder(self.le_poster, self.le_web_url) self.setTabOrder(self.le_web_url, self.le_summary)
# layout1.addWidget(QPushButton('Bottom')) # window.setLayout(layout1) # QGridLayout manager # layout2 = QGridLayout() # layout2.addWidget(QPushButton('Button (0, 0)'), 0, 0) # layout2.addWidget(QPushButton('Button (0, 1)'), 0, 1) # layout2.addWidget(QPushButton('Button (0, 2)'), 0, 2) # layout2.addWidget(QPushButton('Button (1, 0)'), 1, 0) # layout2.addWidget(QPushButton('Button (1, 1)'), 1, 1) # layout2.addWidget(QPushButton('Button (1, 2)'), 1, 2) # layout2.addWidget(QPushButton('Button (2, 0)'), 2, 0) # layout2.addWidget(QPushButton('Button (2, 1) = 2 Columns Span'), 2, 1, 1, 2) # window.setLayout(layout2) # QFormLayout manager layout3 = QFormLayout() layout3.addRow('Name:', QLineEdit()) layout3.addRow('Age:', QLineEdit()) layout3.addRow('Job:', QLineEdit()) layout3.addRow('Hobbies:', QLineEdit()) window.setLayout(layout3) # show your application's GUI window.show() # run your application's event loop (or main loop) sys.exit(app.exec_())
def initRewardsForm(self): self.collateralHidden = True self.rewardsForm = QGroupBox() self.rewardsForm.setTitle("Transfer Rewards") layout = QFormLayout() layout.setContentsMargins(10, 10, 10, 10) layout.setSpacing(13) layout.setFieldGrowthPolicy(QFormLayout.AllNonFixedFieldsGrow) ##--- ROW 1 hBox = QHBoxLayout() self.mnSelect = QComboBox() self.mnSelect.setToolTip("Select Masternode") hBox.addWidget(self.mnSelect) self.btn_ReloadUTXOs = QPushButton() self.btn_ReloadUTXOs.setToolTip("Reload UTXOs") refresh_icon = QIcon(os.path.join(self.imgDir, 'icon_refresh.png')) self.btn_ReloadUTXOs.setIcon(refresh_icon) hBox.addWidget(self.btn_ReloadUTXOs) hBox.addStretch(1) label = QLabel("Total Address Balance") label.setAlignment(Qt.AlignRight | Qt.AlignVCenter) hBox.addWidget(label) self.addrAvailLine = QLabel() self.addrAvailLine.setToolTip("PIVX Address total balance") self.addrAvailLine.setText("--") hBox.addWidget(self.addrAvailLine) self.btn_toggleCollateral = QPushButton("Show Collateral") hBox.addWidget(self.btn_toggleCollateral) layout.addRow(QLabel("Masternode"), hBox) ## --- ROW 2: REWARDS self.rewardsList = QVBoxLayout() self.rewardsList.statusLabel = QLabel() self.rewardsList.statusLabel.setMinimumWidth(116) self.resetStatusLabel('<b style="color:red">Reload Rewards</b>') self.rewardsList.addWidget(self.rewardsList.statusLabel) self.rewardsList.box = QTableWidget() self.rewardsList.box.setMinimumHeight(140) #self.rewardsList.box.setMaximumHeight(140) self.rewardsList.box.setHorizontalScrollBarPolicy( Qt.ScrollBarAlwaysOff) self.rewardsList.box.setSelectionMode(QAbstractItemView.MultiSelection) self.rewardsList.box.setSelectionBehavior(QAbstractItemView.SelectRows) self.rewardsList.box.setShowGrid(True) self.rewardsList.box.setColumnCount(4) self.rewardsList.box.setRowCount(0) self.rewardsList.box.horizontalHeader().setSectionResizeMode( 2, QHeaderView.Stretch) self.rewardsList.box.verticalHeader().hide() item = QTableWidgetItem() item.setText("PIVs") item.setTextAlignment(Qt.AlignCenter) self.rewardsList.box.setHorizontalHeaderItem(0, item) item = QTableWidgetItem() item.setText("Confirmations") item.setTextAlignment(Qt.AlignCenter) self.rewardsList.box.setHorizontalHeaderItem(1, item) item = QTableWidgetItem() item.setText("TX Hash") item.setTextAlignment(Qt.AlignCenter) self.rewardsList.box.setHorizontalHeaderItem(2, item) item = QTableWidgetItem() item.setText("TX Output N") item.setTextAlignment(Qt.AlignCenter) self.rewardsList.box.setHorizontalHeaderItem(3, item) item = QTableWidgetItem() self.rewardsList.addWidget(self.rewardsList.box) layout.addRow(self.rewardsList) ##--- ROW 3 hBox2 = QHBoxLayout() self.btn_selectAllRewards = QPushButton("Select All") self.btn_selectAllRewards.setToolTip("Select all available UTXOs") hBox2.addWidget(self.btn_selectAllRewards) self.btn_deselectAllRewards = QPushButton("Deselect all") self.btn_deselectAllRewards.setToolTip("Deselect current selection") hBox2.addWidget(self.btn_deselectAllRewards) hBox2.addWidget(QLabel("Selected rewards")) self.selectedRewardsLine = QLabel() self.selectedRewardsLine.setMinimumWidth(200) self.selectedRewardsLine.setStyleSheet("color: purple") self.selectedRewardsLine.setToolTip("PIVX to move away") hBox2.addWidget(self.selectedRewardsLine) hBox2.addStretch(1) self.swiftxCheck = QCheckBox() self.swiftxCheck.setToolTip( "check for SwiftX instant transaction (flat fee rate of 0.01 PIV)") hBox2.addWidget(QLabel("Use SwiftX")) hBox2.addWidget(self.swiftxCheck) layout.addRow(hBox2) ##--- ROW 4 hBox3 = QHBoxLayout() self.destinationLine = QLineEdit() self.destinationLine.setToolTip("PIVX address to transfer rewards to") hBox3.addWidget(self.destinationLine) hBox3.addWidget(QLabel("Fee")) self.feeLine = QDoubleSpinBox() self.feeLine.setDecimals(8) self.feeLine.setPrefix("PIV ") self.feeLine.setToolTip("Insert a small fee amount") self.feeLine.setFixedWidth(150) self.feeLine.setSingleStep(0.001) hBox3.addWidget(self.feeLine) self.btn_sendRewards = QPushButton("Send") hBox3.addWidget(self.btn_sendRewards) layout.addRow(QLabel("Destination Address"), hBox3) ##--- ROW 5 hBox4 = QHBoxLayout() hBox4.addStretch(1) self.loadingLine = QLabel( "<b style='color:red'>Preparing TX.</b> Completed: ") self.loadingLinePercent = QProgressBar() self.loadingLinePercent.setMaximumWidth(200) self.loadingLinePercent.setMaximumHeight(10) self.loadingLinePercent.setRange(0, 100) hBox4.addWidget(self.loadingLine) hBox4.addWidget(self.loadingLinePercent) self.loadingLine.hide() self.loadingLinePercent.hide() layout.addRow(hBox4) #--- Set Layout self.rewardsForm.setLayout(layout) #--- ROW 5 self.btn_Cancel = QPushButton("Clear/Reload")
def init_controls(self): form = QFormLayout() self.vbox.addLayout(form) # self.init_description(form) self.diaphragm_widget(form)
def inicializar_tab_datos_contacto(self): layout = QFormLayout() layout.addRow('Correo-e:', QLineEdit()) layout.addRow('Dirección:', QLineEdit()) self.tab_datos_contacto.setLayout(layout)
def form(self): # layout:QFormLayout layout = QFormLayout() # qIntegerSpinBoxUserID:QSpinBox self.qIntegerSpinBoxUserID = QSpinBox(); self.qIntegerSpinBoxUserID.setValue(self.userID) self.qIntegerSpinBoxUserID.setMinimum(0) self.qIntegerSpinBoxUserID.setMaximum(len(self.users)) self.qIntegerSpinBoxUserID.setSingleStep(1) self.qIntegerSpinBoxUserID.valueChanged.connect(self.clickUser1) layout.addRow(QLabel("User ID:"), self.qIntegerSpinBoxUserID) # qIntegerSpinBoxDimensionX:QSpinBox self.qIntegerSpinBoxDimensionX = QSpinBox(); self.qIntegerSpinBoxDimensionX.setValue(self.dimensionX) self.qIntegerSpinBoxDimensionX.setMinimum(0) self.qIntegerSpinBoxDimensionX.setMaximum(3) self.qIntegerSpinBoxDimensionX.setSingleStep(1) self.qIntegerSpinBoxDimensionX.valueChanged.connect(self.clickUser1) layout.addRow(QLabel("Dimension X:"), self.qIntegerSpinBoxDimensionX) # qIntegerSpinBoxDimensionY:QSpinBox self.qIntegerSpinBoxDimensionY = QSpinBox(); self.qIntegerSpinBoxDimensionY.setValue(self.dimensionY) self.qIntegerSpinBoxDimensionY.setMinimum(0) self.qIntegerSpinBoxDimensionY.setMaximum(3) self.qIntegerSpinBoxDimensionY.setSingleStep(1) self.qIntegerSpinBoxDimensionY.valueChanged.connect(self.clickUser1) layout.addRow(QLabel("Dimension Y:"), self.qIntegerSpinBoxDimensionY) # self.qTextEditUser:QTextEdit self.qTextEditUser = QTextEdit() for uLineI in self.users[self.userID].exportAsList(): self.qTextEditUser.append(str(uLineI)) self.qTextEditUser.verticalScrollBar().setValue(self.qTextEditUser.verticalScrollBar().minimum()) #self.qTextEditUser.setReadOnly(True) layout.addRow("User Profile Model Def.", self.qTextEditUser) # qDoubleSpinBoxWeightX:QDoubleSpinBox self.qDoubleSpinBoxWeightX = QDoubleSpinBox(); self.qDoubleSpinBoxWeightX.setValue(self.wx) self.qDoubleSpinBoxWeightX.setMinimum(0.05) self.qDoubleSpinBoxWeightX.setMaximum(0.95) self.qDoubleSpinBoxWeightX.setSingleStep(0.05) self.qDoubleSpinBoxWeightX.valueChanged.connect(self.clickUser1) layout.addRow(QLabel("Weight X:"), self.qDoubleSpinBoxWeightX) # qDoubleSpinBoxContourLine:QDoubleSpinBox self.qDoubleSpinBoxContourLine = QDoubleSpinBox(); self.qDoubleSpinBoxContourLine.setValue(self.aggrLevel) self.qDoubleSpinBoxContourLine.setMinimum(0.05) self.qDoubleSpinBoxContourLine.setMaximum(0.95) self.qDoubleSpinBoxContourLine.setSingleStep(0.05) self.qDoubleSpinBoxContourLine.valueChanged.connect(self.clickUser1) layout.addRow(QLabel("Contour Line:"), self.qDoubleSpinBoxContourLine) # # button:QPushButton # button = QtWidgets.QPushButton('Show') # button.clicked.connect(self.clickUser1) # layout.addWidget(button) # qGroupBox:QGroupBox qGroupBox = QGroupBox("User definition") qGroupBox.setLayout(layout) self.layout.addWidget(qGroupBox)
def __init__(self, engine): super(ConfigWindow, self).__init__() self.setupUi(self) self._engine = engine machine_options = { 'Keyboard': KeyboardOption, 'Treal': NopeOption, } machines = { machine: _(machine) for machine in engine.list_plugins('machine') } mappings = ( (_('Interface'), ( ConfigOption(_('Start minimized:'), 'start_minimized', BooleanOption, _('Minimize the main window to systray on startup.')), ConfigOption(_('Show paper tape:'), 'show_stroke_display', BooleanOption, _('Open the paper tape on startup.')), ConfigOption(_('Show suggestions:'), 'show_suggestions_display', BooleanOption, _('Open the suggestions dialog on startup.')), ConfigOption(_('Add translation dialog opacity:'), 'translation_frame_opacity', partial(IntOption, maximum=100, minimum=0), _('Set the translation dialog opacity:\n' '- 0 makes the dialog invisible\n' '- 100 is fully opaque')), )), (_('Logging'), ( ConfigOption(_('Log file:'), 'log_file_name', partial(FileOption, _('Select a log file'), _('Log files') + ' (*.log)'), _('File to use for logging strokes/translations.')), ConfigOption(_('Log strokes:'), 'enable_stroke_logging', BooleanOption, _('Save strokes to the logfile.')), ConfigOption(_('Log translations:'), 'enable_translation_logging', BooleanOption, _('Save translations to the logfile.')), )), (_('Machine'), ( ConfigOption(_('Type:'), 'machine_type', partial(ChoiceOption, choices=machines), dependents=( ('machine_specific_options', engine.machine_specific_options), ('system_keymap', lambda v: self._update_keymap(machine_type=v)), )), ConfigOption(_('Options:'), 'machine_specific_options', lambda *args: machine_options.get(self._config['machine_type'], SerialOption)(*args)), ConfigOption(_('Keymap:'), 'system_keymap', KeymapOption), )), (_('Output'), ( ConfigOption(_('Enable at start:'), 'auto_start', BooleanOption, _('Enable output on startup.')), ConfigOption(_('Start attached:'), 'start_attached', BooleanOption, _('Disable preceding space on first output.\n' '\n' 'This option is only applicable when spaces are placed before.')), ConfigOption(_('Start capitalized:'), 'start_capitalized', BooleanOption, _('Capitalize the first word.')), ConfigOption(_('Space placement:'), 'space_placement', partial(ChoiceOption, choices={ 'Before Output': _('Before Output'), 'After Output': _('After Output'), }), _('Set automatic space placement: before or after each word.')), ConfigOption(_('Undo levels:'), 'undo_levels', partial(IntOption, maximum=10000, minimum=MINIMUM_OUTPUT_CONFIG_UNDO_LEVELS), _('Set how many preceding strokes can be undone.\n' '\n' 'Note: the effective value will take into account the\n' 'dictionaries entry with the maximum number of strokes.')), )), (_('System'), ( ConfigOption(_('Type'), 'system_name', partial(ChoiceOption, choices={ name: name for name in engine.list_plugins('system') }), dependents=( ('system_keymap', lambda v: self._update_keymap(system_name=v)), )), )), ) # Only keep supported options, to avoid messing with things like # dictionaries, that are handled by another (possibly concurrent) # dialog. supported_options = set() for section, option_list in mappings: supported_options.update(option.option_name for option in option_list) self._config = { name: value for name, value in engine.config.items() if name in supported_options } # Create and fill tabs. options = {} for section, option_list in mappings: layout = QFormLayout() for option in option_list: widget = self._create_option_widget(option) options[option.option_name] = option option.tab_index = self.tabs.count() option.layout = layout option.widget = widget label = QLabel(option.display_name) label.setToolTip(option.help_text) layout.addRow(label, widget) frame = QFrame() frame.setLayout(layout) scroll_area = QScrollArea() scroll_area.setWidgetResizable(True) scroll_area.setWidget(frame) self.tabs.addTab(scroll_area, section) # Update dependents. for option in options.values(): option.dependents = [ (options[option_name], update_fn) for option_name, update_fn in option.dependents ] buttons = self.findChild(QWidget, 'buttons') buttons.button(QDialogButtonBox.Ok).clicked.connect(self.on_apply) buttons.button(QDialogButtonBox.Apply).clicked.connect(self.on_apply) self.restore_state() self.finished.connect(self.save_state)
def initUI(self): pg.setConfigOption('background', 'w') self.setWindowTitle('PyMFDFA') self.setWindowIcon(QIcon("Icons\multifractal.ico")) ################################################################## ### Barra de Herramientas ################################################################## self.barra_estado = QStatusBar() self.setStatusBar(self.barra_estado) barra_herr = QToolBar("Toolbar") self.addToolBar(barra_herr) barra_menu = QMenuBar() self.setMenuBar(barra_menu) abrir_action = QAction(QIcon('Icons/open.png'), 'Load Signal', self) abrir_action.setToolTip('Load Signal') abrir_action.setStatusTip('Load signal to segment') abrir_action.triggered.connect(self.cargarSenial) barra_herr.addAction(abrir_action) barra_herr.addSeparator() DFA_action = QAction(QIcon('Icons/DFA.ico'), 'Detrended Analysis Fluctuation', self) DFA_action.setToolTip('Detrended Analysis Fluctuation') DFA_action.setStatusTip('Detrended Analysis Fluctuation') DFA_action.triggered.connect(self.DFA_boton) barra_herr.addAction(DFA_action) MDFA_action = QAction(QIcon('Icons/multifractal.ico'), 'Multifractal Detrended Analysis Fluctuation', self) MDFA_action.setToolTip('Multifractal Detrended Analysis Fluctuation') MDFA_action.setStatusTip('Multifractal Detrended Analysis Fluctuation') MDFA_action.triggered.connect(self.MFDFA_boton) barra_herr.addAction(MDFA_action) ################################################################# ## Definición de variables globales ################################################################# self.nombreSenial = '' self.y = [] self.aux = 0 self.aux2 = False ################################################################# ## Definición de elementos contenedores ################################################################# contain = QSplitter(Qt.Horizontal) graficos = QVBoxLayout() botones = QVBoxLayout() results2 = QFormLayout() results3 = QFormLayout() results = QFormLayout() ################################################################# ## Elementos del layout botones ################################################################# #Region for segment in signal self.lr = pg.LinearRegionItem([0, 6000]) btnLoadSig = QPushButton('Load signal') btnLoadSig.clicked.connect(self.cargarSenial) btnLoadSig.setStyleSheet("font-size: 18px") self.btnIniciar = QPushButton('Start segmentation') self.btnIniciar.clicked.connect(self.enabledButtons) self.btnIniciar.setEnabled(False) self.btnIniciar.setStyleSheet("font-size: 18px") self.btnAdd = QPushButton('Add segment') self.btnAdd.clicked.connect(self.addInterval) self.btnAdd.setEnabled(False) self.btnAdd.setStyleSheet("font-size: 18px") txtnumseg = QLabel("Segment num:") txtnumseg.setStyleSheet("font-size: 18px") validator = QIntValidator() validator.setRange(100, 999) self.txtns = QLineEdit() self.txtns.setValidator(validator) self.txtns.setEnabled(False) lbl_umbral = QLabel('Upper threshold:') lbl_umbral.setStyleSheet("font-size: 18px") self.txt_umbral = QLineEdit() lbl_basal = QLabel('Lower threshold') lbl_basal.setStyleSheet("font-size: 18px") self.txt_basal = QLineEdit() lbl_ancho = QLabel('Segment width ') lbl_ancho.setStyleSheet("font-size: 18px") self.txt_ancho = QLineEdit() lbl_separacion = QLabel('Distance:') lbl_separacion.setStyleSheet("font-size: 18px") self.txt_separacion = QLineEdit() self.btnauto = QPushButton('Start auto-segmentation') self.btnauto.clicked.connect(self.autoseg) self.btnauto.setStyleSheet("font-size: 18px") self.btnauto.setEnabled(False) lbl_total = QLabel('# of segments:') lbl_total.setStyleSheet('font-size: 18px') self.txt_total = QLabel() self.txt_total.setStyleSheet('font-size: 18px') lbl_file = QLabel('Segment: ') lbl_file.setStyleSheet("font-size: 18px") self.seg_pos = QComboBox() self.seg_pos.currentIndexChanged.connect(self.localizacion) self.lbl_inicio = QLabel() self.lbl_inicio.setStyleSheet("font-size: 18px") self.lbl_final = QLabel() self.lbl_final.setStyleSheet("font-size: 18px") self.btn_loc = QPushButton('Find segment') self.btn_loc.setStyleSheet("font-size: 18px") self.btn_loc.clicked.connect(self.colocar) self.btn_loc.setEnabled(False) lbl_autoseg = QLabel("Auto-Segmentation") lbl_autoseg.setStyleSheet("font-size: 20px") ################################################################# ## Elementos del layout graficos ################################################################# self.plot1 = pg.PlotWidget() self.plot1.setLabel('bottom', color='k', **{'font-size': '16pt'}) self.plot1.getAxis('bottom').setPen(pg.mkPen(color='k', width=1)) self.plot1.setLabel('left', color='k', **{'font-size': '16pt'}) self.plot1.getAxis('left').setPen(pg.mkPen(color='k', width=1)) self.plot1.showGrid(1, 1, 0.2) graficos.addWidget(self.plot1) ################################################################# ## Colocar elementos en layout botones ################################################################# botones.addWidget(btnLoadSig) botones.addWidget(self.btnIniciar) results.addRow(txtnumseg, self.txtns) results.addRow(self.btnAdd) botones.addLayout(results) results2.addRow(lbl_autoseg) results2.addRow(lbl_umbral, self.txt_umbral) results2.addRow(lbl_basal, self.txt_basal) results2.addRow(lbl_ancho, self.txt_ancho) results2.addRow(lbl_separacion, self.txt_separacion) botones.addLayout(results2) botones.addWidget(self.btnauto) results3.addRow(lbl_total, self.txt_total) results3.addRow(lbl_file, self.seg_pos) results3.addRow(self.lbl_inicio, self.lbl_final) results3.addRow(self.btn_loc) botones.addLayout(results3) ################################################################# ## Colocar elementos en la ventana ################################################################# bot = QWidget() bot.setLayout(botones) gra = QWidget() gra.setLayout(graficos) contain.addWidget(gra) contain.addWidget(bot) self.setCentralWidget(contain) self.show()
def init_parameter_window(self): layout = QFormLayout() layout.setContentsMargins(300, 150, 300, 150) # left,top,right,bottom # - Parameters # heart rate self.sb_heartrate = QSpinBox() self.sb_heartrate.setRange(30, 175) container = Wrapper((self.sb_heartrate, QLabel(("(bpm)")))) layout.addRow("Heart Rate:", container) # chamber to pulse rbg_chambertopulse = QButtonGroup() self.rb_ctp_A = QRadioButton("A") rbg_chambertopulse.addButton(self.rb_ctp_A) self.rb_ctp_V = QRadioButton("V") rbg_chambertopulse.addButton(self.rb_ctp_V) container = Wrapper((self.rb_ctp_A, self.rb_ctp_V)) layout.addRow("Chamber to Pulse: ", container) # pulse width self.sb_pulsewidth = QDoubleSpinBox() self.sb_pulsewidth.setRange(0.1, 1.9) self.sb_pulsewidth.setDecimals(1) self.sb_pulsewidth.setSingleStep(0.1) container = Wrapper((self.sb_pulsewidth, QLabel(("(msec)")))) layout.addRow("Pulse Width:", container) # pulse amplitude self.sb_pulseamplitude = QDoubleSpinBox() self.sb_pulseamplitude.setRange(0.5, 7.0) self.sb_pulseamplitude.setDecimals(1) self.sb_pulseamplitude.setSingleStep(0.1) container = Wrapper((self.sb_pulseamplitude, QLabel(("(V)")))) layout.addRow("Pulse Amplitude:", container) # chamber to sense rbg_chambertosense = QButtonGroup() self.rb_cts_A = QRadioButton("A") rbg_chambertosense.addButton(self.rb_cts_A) self.rb_cts_V = QRadioButton("V") rbg_chambertosense.addButton(self.rb_cts_V) self.rb_cts_none = QRadioButton("None") rbg_chambertosense.addButton(self.rb_cts_none) container = Wrapper((self.rb_cts_A, self.rb_cts_V, self.rb_cts_none)) layout.addRow("Chamber to Sense: ", container) # ventricular sensitivity self.sb_ventricularsensitivity = QDoubleSpinBox() self.sb_ventricularsensitivity.setRange(1, 10) self.sb_ventricularsensitivity.setDecimals(1) self.sb_ventricularsensitivity.setSingleStep(0.1) container = Wrapper((self.sb_ventricularsensitivity, QLabel(("(mV)")))) layout.addRow("Ventricular Sensitivity: ", container) # atrial sensitivity rbg_atrialsensitivity = QButtonGroup() self.rb_as_25 = QRadioButton("0.25") rbg_atrialsensitivity.addButton(self.rb_as_25) self.rb_as_50 = QRadioButton("0.50") rbg_atrialsensitivity.addButton(self.rb_as_50) self.rb_as_75 = QRadioButton("0.75") rbg_atrialsensitivity.addButton(self.rb_as_75) container = Wrapper( (self.rb_as_25, self.rb_as_50, self.rb_as_75, QLabel("(mV)"))) layout.addRow("Atrial Sensitivity: ", container) # rate adaption rbg_rateadaption = QButtonGroup() self.rb_ra_on = QRadioButton("On") rbg_rateadaption.addButton(self.rb_ra_on) self.rb_ra_off = QRadioButton("Off") rbg_rateadaption.addButton(self.rb_ra_off) container = Wrapper((self.rb_ra_on, self.rb_ra_off)) layout.addRow("Rate Adaption: ", container) # Medium Activity Threshold self.sb_mediumactivitythreshold = QSpinBox() self.sb_mediumactivitythreshold.setRange(0, 500) container = Wrapper((self.sb_mediumactivitythreshold, )) layout.addRow("Medium Activity Threshold: ", container) # High Activity Threshold self.sb_highactivitythreshold = QSpinBox() self.sb_highactivitythreshold.setRange(0, 500) container = Wrapper((self.sb_highactivitythreshold, )) layout.addRow("High Activity Interval: ", container) # Reaction Time self.sb_reactiontime = QSpinBox() self.sb_reactiontime.setRange(10, 50) container = Wrapper((self.sb_reactiontime, QLabel("(s)"))) layout.addRow("Reaction Time: ", container) # Recovery Time self.sb_recoverytime = QSpinBox() self.sb_recoverytime.setRange(2, 16) container = Wrapper((self.sb_recoverytime, QLabel("(min)"))) layout.addRow("Recovery Time: ", container) # hysterisis rbg_hysteris = QButtonGroup() self.rb_h_on = QRadioButton("On") rbg_hysteris.addButton(self.rb_ra_on) self.rb_h_off = QRadioButton("Off") rbg_hysteris.addButton(self.rb_ra_off) container = Wrapper((self.rb_h_on, self.rb_h_off)) layout.addRow("Hysterisis: ", container) # hysterisis interval self.sb_hysterisisinterval = QSpinBox() self.sb_hysterisisinterval.setRange(200, 500) container = Wrapper((self.sb_hysterisisinterval, QLabel(("(msec)")))) layout.addRow("Hysterisis Interval: ", container) # vrp self.sb_vrp = QSpinBox() self.sb_vrp.setRange(150, 500) container = Wrapper((self.sb_vrp, QLabel("(msec)"))) layout.addRow("VRP: ", container) # arp self.sb_arp = QSpinBox() self.sb_arp.setRange(150, 500) container = Wrapper((self.sb_arp, QLabel("(msec)"))) layout.addRow("ARP: ", container) # - Set default parameter values self.param_set_default() # - Buttons b_logout, b_update = QPushButton("Logout"), QPushButton("Update") layout.addRow(b_logout, b_update) b_logout.clicked.connect(self.logout) b_update.clicked.connect(self.update) self.rb_ctp_A.clicked.connect(self.check_chamber_pulse) self.rb_ctp_V.clicked.connect(self.check_chamber_pulse) self.rb_cts_A.clicked.connect(self.check_chamber_sense) self.rb_cts_V.clicked.connect(self.check_chamber_sense) self.stack2.setLayout(layout)
def init_ui(self): self.form_layout = QFormLayout() self.refresh_objects() self.setLayout(self.form_layout)
def dibujar_IU(self): self.setWindowTitle("Ingreso de Lotes") self.setWindowModality(Qt.ApplicationModal) self.setSizeGripEnabled(False) self.setContentsMargins(10, 10, 10, 10) self.lotes = QTableWidget(0, 6) self.lotes_error = QLabel("*") self.cantidad_lotes = QLabel("0 Lotes") self.espaciador = QLabel(" ") self.lotes.setHorizontalHeaderLabels([ "Id", "Descripción", "Facturación Media Anual", "Recursos Financieros", "Experiencia", "Oculto" ]) self.lotes.verticalHeader().setVisible(False) self.lotes.horizontalHeader().setSectionResizeMode(QHeaderView.Fixed) self.lotes.horizontalHeader().setDefaultAlignment(Qt.AlignLeft) self.lotes.horizontalHeader().hideSection(5) self.lotes.setSelectionMode(QAbstractItemView.SingleSelection) self.lotes.setSelectionBehavior(QAbstractItemView.SelectRows) self.lotes.resizeColumnsToContents() self.lotes.setColumnWidth(0, self.lotes.columnWidth(0) + 10) self.lotes.setColumnWidth(1, self.lotes.columnWidth(1) + 150) self.lotes.setColumnWidth(3, self.lotes.columnWidth(2)) self.lotes.setColumnWidth(4, self.lotes.columnWidth(2)) self.lotes.resize(self.lotes.sizeHint()) self.lotes.setSizeAdjustPolicy( QAbstractScrollArea.AdjustToContentsOnFirstShow) self.lotes.setFixedHeight(self.lotes.height() + 100) self.lotes.setEditTriggers(QAbstractItemView.NoEditTriggers) self.lotes.cellChanged.connect(self.marcar_lotes_erroneos) self.lotes.setToolTip("Lotes que son licitados") self.lotes.doubleClicked.connect(self.editar_lote) self.lotes_error.setStyleSheet("QLabel {color : red}") self.lotes_error.setVisible(False) self.lotes_error.setFixedWidth(10) #self.cantidad_lotes.setFixedWidth(self.lotes.columnWidth(0)) boton_continuar = QPushButton(QIcon("iconos/right-arrow.png"), "") boton_continuar.clicked.connect(self.continuar) boton_continuar.setDefault(True) boton_continuar.setMinimumSize(50, 10) boton_continuar.setToolTip("Continuar al ingreso de Empresas") boton_retroceder = QPushButton(QIcon("iconos/left-arrow.png"), "") boton_retroceder.clicked.connect(self.retroceder) boton_retroceder.setMinimumSize(50, 10) boton_retroceder.setToolTip("Retroceder al Menú Principal") boton_agregar_lote = QPushButton(QIcon("iconos/plus.png"), "") boton_agregar_lote.clicked.connect(self.agregar_lote) boton_agregar_lote.setMinimumSize(50, 10) boton_agregar_lote.setToolTip("Agregar nuevo Lote") boton_eliminar_lote = QPushButton(QIcon("iconos/minus.png"), "") boton_eliminar_lote.clicked.connect(self.eliminar_lote) boton_eliminar_lote.setMinimumSize(50, 10) boton_eliminar_lote.setToolTip("Eliminar Lote seleccionado") boton_editar_lote = QPushButton(QIcon("iconos/edit.png"), "") boton_editar_lote.clicked.connect(self.editar_lote) boton_editar_lote.setMinimumSize(50, 10) boton_editar_lote.setToolTip("Editar Lote seleccionado") caja_botones = QVBoxLayout() caja_botones.addStretch(1) caja_botones.addWidget(boton_agregar_lote) caja_botones.addWidget(boton_eliminar_lote) caja_botones.addWidget(boton_editar_lote) caja_botones.addStretch(5) caja_totales = QHBoxLayout() caja_totales.addWidget(self.cantidad_lotes) caja_totales.addStretch(1) grilla = QGridLayout() grilla.setColumnMinimumWidth(1, 20) #grilla.addWidget(QLabel("Lotes"), 0, 0, Qt.AlignTop) grilla.addWidget(self.lotes_error, 0, 1, Qt.AlignTop | Qt.AlignRight) grilla.addWidget(self.lotes, 0, 2) grilla.addLayout(caja_botones, 0, 3) grilla.addWidget(self.espaciador, 1, 1) grilla.addLayout(caja_totales, 1, 2) marco = QGroupBox("Ingrese los lotes que componen la Licitacón") marco.setLayout(grilla) caja_horizontal = QHBoxLayout() caja_horizontal.addStretch(1) caja_horizontal.addWidget(boton_retroceder) caja_horizontal.addStretch(5) caja_horizontal.addWidget(boton_continuar) caja_horizontal.addStretch(1) caja_horizontal.setContentsMargins(10, 10, 10, 0) formulario = QFormLayout(self) formulario.addRow(marco) formulario.addRow(caja_horizontal) self.resize(self.sizeHint()) self.setMinimumSize(self.sizeHint()) self.setMaximumSize(self.sizeHint())
def __init__(self, parent=None): super().__init__() self.parent = parent self.setLayout(QVBoxLayout()) self.layout().setAlignment(Qt.AlignCenter) hbox = QHBoxLayout() self.layout().addLayout(hbox) logo = QLabel() logo.setFixedSize(64, 64) logo.setScaledContents(True) logo.setPixmap(QPixmap(":/images/disk-delete.svg")) hbox.addWidget(logo) self.diskDeleteRadio = QRadioButton() self.diskDeleteRadio.setChecked(True) font = self.diskDeleteRadio.font() font.setBold(True) self.diskDeleteRadio.setFont(font) hbox.addWidget(self.diskDeleteRadio) form = QFormLayout() form.setContentsMargins(90, 0, 0, 0) self.layout().addLayout(form) self.warning_label = QLabel() form.addRow(self.warning_label) vbox = QVBoxLayout() form.addRow(vbox) self.cryptCheck = QCheckBox() vbox.addWidget(self.cryptCheck) self.crypt_label = QLabel() vbox.addWidget(self.crypt_label) vbox = QVBoxLayout() form.addRow(vbox) self.homeCheck = QCheckBox() vbox.addWidget(self.homeCheck) self.home_label = QLabel() vbox.addWidget(self.home_label) hbox = QHBoxLayout() self.layout().addLayout(hbox) logo = QLabel() logo.setFixedSize(64, 64) logo.setScaledContents(True) logo.setPixmap(QPixmap(":/images/manuel-partition.svg")) hbox.addWidget(logo) self.manuelRadio = QRadioButton() font = self.manuelRadio.font() font.setBold(True) self.manuelRadio.setFont(font) hbox.addWidget(self.manuelRadio) self.retranslate()
def setup_right_panel(self, parent=None): self.PVmode = 'P' #Control modes (P for pressure / V for volume) self.FDmode = 'D' #Control modes (F for load / D for displacement) # Creation of the separetor object sepTestH = [QFrame() for i in range(7)] for obj in sepTestH: obj.setFrameShape(QFrame.HLine) #Vertical line obj.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Expanding) obj.setFrameShadow(QFrame.Sunken) obj.setLineWidth(1) sepTestV = [QFrame() for i in range(7)] for obj in sepTestV: obj.setFrameShape(QFrame.VLine) #Vertical line obj.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Expanding) obj.setFrameShadow(QFrame.Sunken) obj.setLineWidth(1) # Button for initialisation self.inibutton = QPushButton(self) #Creation of the widget self.inibutton.clicked.connect( self.clickMethodAcquisition ) #Method to connect the click on the button with the function clickMethodAcquisition #self.inibutton.resize(100,32) self.inibutton.setStatusTip( 'Run the acquisition' ) #When cursor on the button the statue bar show the message self.inibutton.setIcon( QIcon( resource_path( 'tension_inflation/resources/button_start_push.png')) ) #Change the button's icon by the resources self.inibutton.setIconSize(QSize(30, 30)) #Change the size of the icon # Add button for stop self.stopbutton = QPushButton(self) self.stopbutton.clicked.connect(self.clickMethodStop) self.stopbutton.setIcon( QIcon( resource_path('tension_inflation/resources/button_stop.png'))) #self.stopbutton.resize(100,32) self.stopbutton.setStatusTip('Stop the acquisition') self.stopbutton.setIconSize(QSize(30, 30)) #self.stopbutton.move(10, 30) #Create label: running or stopped state self.label_state = QLabel() #Creation of the widget self.label_state.setText(" Stopped ") #Set the text in the label self.label_state.setAlignment( Qt.AlignCenter ) #Alignement of the label (here it's the vertical alignement) self.label_state.setFont(QFont( "Arial", 16, QFont.Bold)) #Set the writing font with the size self.label_state.setStyleSheet("background-color: red;") #Widget with user input for changing load self.input_sample = QLineEdit() #Creation of the widget self.input_sample.setMaxLength(30) #Number of characters accepted self.input_sample.setAlignment(Qt.AlignRight) self.input_sample.setFont(QFont("Arial", 12)) self.input_sample.setStyleSheet( "QLineEdit{background: white;}") #Background color of the widget #hChange the writing color from write to black because we set the background write (I like when it's beautiful) self.input_sample.palette = QPalette() self.input_sample.palette.setColor(QPalette.Text, Qt.black) self.input_sample.setPalette(self.input_sample.palette) #Creation of the label attached to the QLineEdit label_sample_input = QLabel("Sample Name:", self) label_sample_input.setFont(QFont("Arial", 12, QFont.Bold)) #Put the QLineEdit and the label together (like a form) form_sample = QFormLayout() #Creation of the layout form form_sample.addRow( label_sample_input, self.input_sample) #Add things in the layout (by row) #Add the button "Send" to the previous layout by putting all that in another layout box_sample_input = QHBoxLayout() box_sample_input.addLayout(form_sample) box_sample_input.setAlignment(Qt.AlignCenter) #Layout at top with buttons start and stop box_top = QHBoxLayout() box_top.addWidget(self.inibutton) box_top.addSpacing(0) box_top.addWidget(self.stopbutton) box_top.addLayout(box_sample_input) box_top.addStretch() box_top.addWidget(sepTestV[6]) box_top.addWidget(self.label_state) ####################################################### # Choose of the commande mode ####################################################### #Create label: running or stopped state label_control = QLabel() #Creation of the widget label_control.setText(" Control: ") #Set the text in the label label_control.setAlignment( Qt.AlignCenter ) #Alignement of the label (here it's the vertical alignement) label_control.setFont(QFont( "Arial", 16, QFont.Bold)) #Set the writing font with the size group_infl = QButtonGroup(self.centralWidget) #Add a radio button to select mode of command self.Radio_volumeMode = QRadioButton("Mode: Volume") self.Radio_volumeMode.clicked.connect( lambda: self.Mode(self.Radio_volumeMode)) group_infl.addButton(self.Radio_volumeMode) self.Radio_pressureMode = QRadioButton("Mode: Pressure") self.Radio_pressureMode.setChecked(True) self.Radio_pressureMode.clicked.connect( lambda: self.Mode(self.Radio_pressureMode)) group_infl.addButton(self.Radio_pressureMode) group_tension = QButtonGroup(self.centralWidget) #Add a radio button to select mode of command self.Radio_dispMode = QRadioButton("Mode: Displacement") self.Radio_dispMode.setChecked(True) self.Radio_dispMode.clicked.connect( lambda: self.Mode(self.Radio_dispMode)) group_tension.addButton(self.Radio_dispMode) self.Radio_loadMode = QRadioButton("Mode: Load") self.Radio_loadMode.clicked.connect( lambda: self.Mode(self.Radio_loadMode)) group_tension.addButton(self.Radio_loadMode) box_control = QHBoxLayout() box_control.addSpacing(1) box_control.addStretch() box_control.addWidget(label_control) box_control.addSpacing(1) box_control.addStretch() box_control.addWidget(sepTestV[0]) box_control.addSpacing(1) box_control.addStretch() ################################ box__radio_infl = QVBoxLayout() box__radio_infl.addWidget(self.Radio_volumeMode) box__radio_infl.addWidget(self.Radio_pressureMode) ################################ box_control.addLayout(box__radio_infl) box_control.addSpacing(1) box_control.addStretch() box_control.addWidget(sepTestV[1]) ################################ box__radio_tension = QVBoxLayout() box__radio_tension.addWidget(self.Radio_dispMode) box__radio_tension.addWidget(self.Radio_loadMode) ################################ box_control.addLayout(box__radio_tension) ####################################################### # Choose the pre-loading ####################################################### label_preloading = QLabel() #Creation of the widget label_preloading.setText( " Pre-conditioning: ") #Set the text in the label label_preloading.setAlignment( Qt.AlignCenter ) #Alignement of the label (here it's the vertical alignement) label_preloading.setFont(QFont( "Arial", 16, QFont.Bold)) #Set the writing font with the size ##################### self.input_cycleF = QLineEdit() self.input_cycleF.setValidator(QDoubleValidator()) self.input_cycleF.setMaxLength(2) self.input_cycleF.setAlignment(Qt.AlignRight) self.input_cycleF.setFont(QFont("Arial", 12)) #input_vol_pressure.setCursor(QCursor(Qt.ArrowCursor)) self.input_cycleF.setStyleSheet("QLineEdit{background: white;}") self.input_cycleF.palette = QPalette() self.input_cycleF.palette.setColor(QPalette.Text, Qt.black) self.input_cycleF.setPalette(self.input_cycleF.palette) self.label_cyclF = QLabel("Cycle Motor:", self) self.label_cyclF.setFont(QFont("Arial", 12, QFont.Bold)) #Layout input label + input number form_cycleF = QFormLayout() #Creation of the layout form form_cycleF.addRow(self.label_cyclF, self.input_cycleF) #Add things in the layout #Add the button "Send" to the previous layout by putting all that in another layout box_cycle_inputF = QHBoxLayout() box_cycle_inputF.addLayout(form_cycleF) ##################### self.input_cycleP = QLineEdit() self.input_cycleP.setValidator(QDoubleValidator()) self.input_cycleP.setMaxLength(2) self.input_cycleP.setAlignment(Qt.AlignRight) self.input_cycleP.setFont(QFont("Arial", 12)) self.input_cycleP.setStyleSheet("QLineEdit{background: white;}") self.input_cycleP.palette = QPalette() self.input_cycleP.palette.setColor(QPalette.Text, Qt.black) self.input_cycleP.setPalette(self.input_cycleP.palette) self.label_cyclP = QLabel("Cycle Pump:", self) self.label_cyclP.setFont(QFont("Arial", 12, QFont.Bold)) #Layout input label + input number form_cycleP = QFormLayout() #Creation of the layout form form_cycleP.addRow(self.label_cyclP, self.input_cycleP) #Add things in the layout #Add the button "Send" to the previous layout by putting all that in another layout box_cycle_inputP = QHBoxLayout() box_cycle_inputP.addLayout(form_cycleP) box_preloading = QHBoxLayout() box_preloading.addSpacing(5) box_preloading.addLayout(box_cycle_inputF) box_preloading.addStretch() box_preloading.addLayout(box_cycle_inputP) box_preloading.addSpacing(5) ######################################################################################## ######################################################################################## ####################################################### #Choose command send ####################################################### label_commands = QLabel() #Creation of the widget label_commands.setText(" Commands: ") #Set the text in the label label_commands.setAlignment( Qt.AlignCenter ) #Alignement of the label (here it's the vertical alignement) label_commands.setFont(QFont( "Arial", 16, QFont.Bold)) #Set the writing font with the size #################### #Widget with user input for changing load self.input_disp_load = QLineEdit() #Creation of the widget self.input_disp_load.setValidator( QDoubleValidator()) #Only double accepted self.input_disp_load.setMaxLength(10) #Number of characters accepted self.input_disp_load.setAlignment(Qt.AlignRight) self.input_disp_load.setFont(QFont("Arial", 12)) self.input_disp_load.setStyleSheet( "QLineEdit{background: white;}") #Background color of the widget #hChange the writing color from write to black because we set the background write (I like when it's beautiful) self.input_disp_load.palette = QPalette() self.input_disp_load.palette.setColor(QPalette.Text, Qt.black) self.input_disp_load.setPalette(self.input_disp_load.palette) #Creation of the label attached to the QLineEdit self.label_load_input = QLabel("Disp (mm):", self) self.label_load_input.setFont(QFont("Arial", 12, QFont.Bold)) #Put the QLineEdit and the label together (like a form) form_load = QFormLayout() #Creation of the layout form form_load.addRow( self.label_load_input, self.input_disp_load) #Add things in the layout (by row) #Add the button "Send" to the previous layout by putting all that in another layout box_load_input = QHBoxLayout() box_load_input.addLayout(form_load) ##################### ##################### #Widget with user input for changing pressure self.input_vol_pressure = QLineEdit() self.input_vol_pressure.setValidator(QDoubleValidator()) self.input_vol_pressure.setMaxLength(10) self.input_vol_pressure.setAlignment(Qt.AlignRight) self.input_vol_pressure.setFont(QFont("Arial", 12)) self.input_vol_pressure.setStyleSheet("QLineEdit{background: white;}") self.input_vol_pressure.palette = QPalette() self.input_vol_pressure.palette.setColor(QPalette.Text, Qt.black) self.input_vol_pressure.setPalette(self.input_vol_pressure.palette) self.label_pressure_input = QLabel("Pressure (mmHg):", self) self.label_pressure_input.setFont(QFont("Arial", 12, QFont.Bold)) #Layout input label + input number form_pressure = QFormLayout() #Creation of the layout form form_pressure.addRow( self.label_pressure_input, self.input_vol_pressure) #Add things in the layout #Add the button "Send" to the previous layout by putting all that in another layout box_pressure_input = QHBoxLayout() box_pressure_input.addLayout(form_pressure) ##################### box_command = QHBoxLayout() box_command.addSpacing(5) box_command.addLayout(box_load_input) box_command.addSpacing(5) box_command.addWidget(sepTestV[3]) box_command.addSpacing(5) box_command.addLayout(box_pressure_input) box_command.addSpacing(5) box_command.addWidget(sepTestV[4]) box_command.addSpacing(5) ####################################################### #Stop & restart ####################################################### self.button_pause = QPushButton(self) self.button_pause.clicked.connect(self.clickMethodPause) self.button_pause.setIcon( QIcon( resource_path('tension_inflation/resources/button_pause.png'))) self.button_pause.setStatusTip('Stop the test') self.button_pause.setFixedSize(60, 50) self.button_pause.setIconSize(QSize(40, 40)) self.button_restart = QPushButton(self) self.button_restart.clicked.connect(self.clickMethodRestart) self.button_restart.setIcon( QIcon( resource_path( 'tension_inflation/resources/button_restart.png'))) self.button_restart.setStatusTip('Restart the test') self.button_restart.setFixedSize(60, 50) self.button_restart.setIconSize(QSize(40, 40)) box_break = QHBoxLayout() box_break.addSpacing(20) box_break.addStretch() box_break.addWidget(self.button_pause) box_break.addSpacing(20) box_break.addStretch() box_break.addWidget(self.button_restart) box_break.addSpacing(20) box_break.addStretch() ####################################################### #Graph definition ####################################################### # Button for clear the graphs self.clrGraphButton = QPushButton('Clear Graphs', self) self.clrGraphButton.clicked.connect(self.clickMethodClearGraphs) self.clrGraphButton.setStatusTip('Clear the graphs') self.clrGraphButton.setIconSize(QSize(100, 100)) self.graph1 = pg.PlotWidget( self, title="Graph 1") #Creation of the graphic widget self.graph1.setMinimumSize(300, 300) #Set the minimum size of the graph self.graph1.showGrid(x=True, y=True) self.graph1.setLabel('left', 'Load (N)') self.graph1.setLabel('bottom', 'Pressure (mmHg)') self.graphL = self.graph1.plot(pen=None, symbol='+') #Show on the graph self.graph2 = pg.PlotWidget( self, title="Graph 2") #Creation of the graphic widget self.graph2.setMinimumSize(300, 300) #Set the minimum size of the graph self.graph2.showGrid(x=True, y=True) self.graph2.setLabel('left', 'Pressure (mmHg)') self.graph2.setLabel('bottom', 'Time (s)') self.graphR = self.graph2.plot(pen=None, symbol='+') #Show on the graph group_graph = QButtonGroup(self.centralWidget) #Add a radio button to select mode of command self.Radio_graphON = QRadioButton("Graph: On") self.Radio_graphON.clicked.connect( lambda: self.graph_state(self.Radio_graphON)) group_graph.addButton(self.Radio_graphON) self.Radio_graphOFF = QRadioButton("Graph: Off") self.Radio_graphOFF.setChecked(True) self.Radio_graphOFF.clicked.connect( lambda: self.graph_state(self.Radio_graphOFF)) group_graph.addButton(self.Radio_graphOFF) #Creat the layout where to put the graph (and other things) graph_layout = QHBoxLayout() graph_layout.addWidget(self.graph1) graph_layout.addWidget(self.graph2) graph_mode = QHBoxLayout() graph_mode.addWidget(self.Radio_graphON) graph_mode.addWidget(self.Radio_graphOFF) graph_mode.addWidget(self.clrGraphButton) ####################################################### ####################################################### self.panel_test_layout = QVBoxLayout() self.panel_test_layout.addLayout(box_top) self.panel_test_layout.addWidget(sepTestH[0]) self.panel_test_layout.addLayout(box_control) self.panel_test_layout.addWidget(sepTestH[1]) self.panel_test_layout.addWidget(label_preloading) self.panel_test_layout.addSpacing(20) self.panel_test_layout.addLayout(box_preloading) self.panel_test_layout.addWidget(sepTestH[2]) self.panel_test_layout.addWidget(label_commands) self.panel_test_layout.addSpacing(20) self.panel_test_layout.addLayout(box_command) self.panel_test_layout.addWidget(sepTestH[3]) self.panel_test_layout.addLayout(box_break) self.panel_test_layout.addWidget(sepTestH[4]) self.panel_test_layout.addLayout(graph_mode) self.panel_test_layout.addLayout(graph_layout)
def _make_gui(self) -> None: self.setWindowTitle("Transfering files") # Widgets move_icon = QLabel() move_icon.setPixmap(QIcon.fromTheme("stock_folder-move").pixmap(48)) move_icon.setAlignment(Qt.AlignTop | Qt.AlignHCenter) header = QLabel("<big>File transfer in progress:</big>") header.setTextFormat(Qt.RichText) transfer_log_box = QGroupBox("Log:") transfer_log_widget = QTextEdit() transfer_log_widget.setReadOnly(True) transfer_log_widget.setWordWrapMode(QTextOption.NoWrap) self._transfer_log_widget = transfer_log_widget box = QVBoxLayout() box.addWidget(transfer_log_widget) transfer_log_box.setLayout(box) current_file_box = QGroupBox("Info:") current_file_form = QFormLayout() dest_label = QLabel("Destination:") dest_widget = QLabel(self._target_directory) dest_widget.setTextInteractionFlags(Qt.TextSelectableByMouse) self._dest_widget = dest_widget source_label = QLabel("Source:") source_widget = QLabel() source_widget.setTextInteractionFlags(Qt.TextSelectableByMouse) self._source_widget = source_widget progress_label = QLabel("Progress:") progress_widget = QProgressBar() self._progress_bar = progress_widget transfered_label = QLabel("Transfered:") transfered_widget = QLabel() self._transfered = transfered_widget time_label = QLabel("Time passed:") time_widget = QLabel() self._time_widget = time_widget close_checkbox = QCheckBox("Close when finished") close_checkbox.setChecked(settings.value("globals/close_on_transfer_completed", True, bool)) close_checkbox.toggled.connect(self._on_close_checkbox_toggled) self._close_checkbox = close_checkbox current_file_form.addRow(dest_label, dest_widget) current_file_form.addRow(source_label, source_widget) current_file_form.addRow(progress_label, progress_widget) current_file_form.addRow(transfered_label, transfered_widget) current_file_form.addRow(time_label, time_widget) current_file_box.setLayout(current_file_form) # Widgets.ButtonBox button_box = QDialogButtonBox(self) button_box.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) btn_pause = QPushButton(QIcon.fromTheme("media-pause"), "Pause") button_box.addButton(btn_pause, QDialogButtonBox.ActionRole) self._btn_pause = btn_pause btn_cancel = button_box.addButton(QDialogButtonBox.Cancel) btn_cancel.setDefault(True) self._btn_cancel = btn_cancel btn_close = button_box.addButton(QDialogButtonBox.Close) self._btn_close = btn_close self._btn_close.setVisible(False) # Layout subvbox = QVBoxLayout() subvbox.addWidget(header) subvbox.addWidget(transfer_log_box) subvbox.addWidget(current_file_box) subvbox.addWidget(close_checkbox) hbox = QHBoxLayout() hbox.addWidget(move_icon) hbox.addLayout(subvbox) vbox = QVBoxLayout() vbox.addLayout(hbox) vbox.addWidget(button_box) self.setLayout(vbox) # Signals btn_pause.clicked.connect(self._on_pause_button) btn_cancel.clicked.connect(self.reject) btn_close.clicked.connect(self.accept)
def __init__(self, *args, **kwargs): QDialog.__init__(self, *args, **kwargs) self.Form = QFormLayout() self.setLayout(self.Form)
def __init__(self, main_window, proj_dir_name): super().__init__(main_window) self.main_window = main_window self.project_dir_name = proj_dir_name tokens = self.project_dir_name.split('/') self.indicator_revert_to_master = True if os.path.isfile(self.project_dir_name + '/tmc_identification_master.csv'): self.master_file_exists = True response = QMessageBox.question( self.main_window, 'Custom TMC File Found', 'An adjusted TMC identification file and a master TMC identification file have both been found.\n\n' + 'Use the adjusted TMC list?\n(Choosing "No" will revert to the master TMC list).', QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes) if response == QMessageBox.Yes: self.tmc_file_name = self.project_dir_name + '/tmc_identification.csv' else: self.tmc_file_name = self.project_dir_name + '/tmc_identification_master.csv' self.indicator_revert_to_master = False else: self.master_file_exists = False self.tmc_file_name = self.project_dir_name + '/tmc_identification.csv' self.data_file_name = self.project_dir_name + '/' + tokens[-1] + '.csv' if not os.path.isfile(self.data_file_name): QMessageBox.warning( None, 'Default Data File Not Found', 'A data file with the default name was not found. Please select the desired dataset file.', QMessageBox.Ok, QMessageBox.Ok) filename, _ = QFileDialog.getOpenFileName(self, 'Select Data File', self.project_dir_name, "CSV files (*.csv)") if filename: self.data_file_name = filename else: return self.setWindowTitle("Import Project Data") self.data_inspected = False self.map_exists = False self.init_map_load = True self.tmc_order_adjusted = False self.tmc_table_init = False self.data_preview = None self.tmc_preview = None # -------- Creating central components self.tab_panel = QTabWidget(self) self.main_layout = QVBoxLayout(self) # -------- Build Project Info Panel self.info_panel = QWidget(self) self.info_layout = QGridLayout(self.info_panel) self.project_dir_label = QLabel('Project Data Location') self.project_dir_label.setFont(QFont("Times", weight=QFont.Bold)) if len(self.project_dir_name) > 35: self.project_dir_label2 = QLabel( '...' + self.project_dir_name[len(self.project_dir_name) - 35:]) else: self.project_dir_label2 = QLabel(self.project_dir_name) self.project_name_label = QLabel('Project Name: ') self.project_name_label.setFont(QFont("Times", weight=QFont.Bold)) self.project_name_input = QLineEdit('New Project') self.analyst_label = QLabel('Enter Analyst Name: ') self.analyst_label.setFont(QFont("Times", weight=QFont.Bold)) self.analyst_input = QLineEdit('--') self.agency_label = QLabel('Enter Agency: ') self.agency_label.setFont(QFont("Times", weight=QFont.Bold)) self.agency_input = QLineEdit('FHWA') self.state_label = QLabel('Enter State: ') self.state_label.setFont(QFont("Times", weight=QFont.Bold)) self.state_input = QLineEdit('') self.loc_label = QLabel('Enter Facility: ') self.loc_label.setFont(QFont("Times", weight=QFont.Bold)) self.loc_input = QLineEdit('') self.data_file_label = QLabel('Data File: ') self.data_file_label.setFont(QFont("Times", weight=QFont.Bold)) self.tmc_file_label = QLabel('TMC Info File: ') self.tmc_file_label.setFont(QFont("Times", weight=QFont.Bold)) self.preview_data_button = QPushButton("Inspect and Configure Dataset") self.info_layout.addWidget(self.project_name_label, 0, 0) self.info_layout.addWidget(self.project_name_input, 0, 1) self.info_layout.addWidget(self.analyst_label, 1, 0) self.info_layout.addWidget(self.analyst_input, 1, 1) self.info_layout.addWidget(self.agency_label, 2, 0) self.info_layout.addWidget(self.agency_input, 2, 1) self.info_layout.addWidget(self.state_label, 0, 2) self.info_layout.addWidget(self.state_input, 0, 3) self.info_layout.addWidget(self.loc_label, 1, 2) self.info_layout.addWidget(self.loc_input, 1, 3) self.info_layout.addWidget(self.project_dir_label, 0, 4) self.info_layout.addWidget(self.project_dir_label2, 0, 5) self.info_layout.addWidget(self.data_file_label, 1, 4) self.info_layout.addWidget( QLabel('.../' + self.data_file_name.split('/')[-1]), 1, 5) self.info_layout.addWidget(self.tmc_file_label, 2, 4) self.info_layout.addWidget( QLabel('.../' + self.tmc_file_name.split('/')[-1]), 2, 5) self.info_layout.addWidget(self.preview_data_button, 3, 4, 1, 2) # -------- Build Data Panel # Creating Components self.data_panel = QWidget(self) self.data_sub_panel = QWidget(self.data_panel) self.data_col_select_panel = QWidget(self.data_sub_panel) self.cb_data_col_tmc = QComboBox() self.cb_data_col_timestamp = QComboBox() self.cb_data_col_speed = QComboBox() self.cb_data_col_travel_time = QComboBox() self.data_res_input = QLineEdit('5') self.data_table = QTableWidget() self.data_label = QLabel( "Use this controls below to ensure that the Probe Data Analytics tool is correctly reading the dataset and " "identify data columns correctly. If a data column exists,\nbut is not automatically identified, please use " "the dropdown boxes to select the correct column name. Additionally please ensure that the resolution of the\n" "data is correct.") # Creating Layouts self.data_layout1 = QVBoxLayout(self.data_panel) self.data_layout2 = QHBoxLayout(self.data_sub_panel) self.data_form_layout = QFormLayout(self.data_col_select_panel) # -------- Build TMC Panel # Creating Components # self.tmc_panel = QSplitter(Qt.Vertical, self) self.tmc_panel = QWidget(self) self.tmc_col_select_panel = QWidget(self.tmc_panel) self.cb_tmc_col_tmc = QComboBox() self.cb_tmc_col_dir = QComboBox() self.cb_tmc_col_len = QComboBox() self.cb_tmc_col_intx = QComboBox() self.cb_tmc_col_slat = QComboBox() self.cb_tmc_col_slon = QComboBox() self.cb_tmc_col_elat = QComboBox() self.cb_tmc_col_elon = QComboBox() self.load_map_button = QPushButton("Add TMCs to Map") self.map_panel = QWidget(self.tmc_panel) self.map_view = QWebEngineView(self.map_panel) self.tmc_table = QTableWidget() self.tmc_table.itemSelectionChanged.connect( self.handle_table_select_changed) self.table_panel = QWidget(self.tmc_panel) self.table_button_panel = QWidget(self.table_panel) self.button_tmc_up = QPushButton("Move TMC Up") self.button_tmc_down = QPushButton("Move TMC Down") self.button_include_all_tmc = QPushButton("Select All TMC") self.button_deselect_all_tmc = QPushButton("Deselect All TMC") if self.indicator_revert_to_master: self.button_revert_to_master = QPushButton("Revert to Master List") else: self.button_revert_to_master = QPushButton( 'Revert to Saved Custom') self.tmc_label = QLabel( "Use this panel to inspect the TMC data. The TMCs can be plotted on the map below, and can be selected for inclusion" "/exclusions in the table. The TMC ordering\ncan also be adjusted if any are out of order." ) # Creating Layouts self.tmc_col_layout = QGridLayout(self.tmc_col_select_panel) self.tmc_panel_layout = QVBoxLayout(self.tmc_panel) self.map_panel_layout = QHBoxLayout(self.map_panel) self.table_panel_layout = QHBoxLayout(self.table_panel) self.table_button_panel_layout = QVBoxLayout(self.table_button_panel) # -------- Adding tabs self.tab_panel.addTab(self.tmc_panel, "TMC List") self.tab_panel.addTab(self.data_panel, "Data Preview") # -------- Creating ButtonBox self.button_box = QDialogButtonBox(Qt.Horizontal, self) self.button_box.addButton(QDialogButtonBox.Ok) self.button_box.addButton(QDialogButtonBox.Cancel) # -------- Adding dialog components self.main_layout.addWidget(self.info_panel) self.main_layout.addWidget(self.tab_panel) self.main_layout.addWidget(self.button_box) # -------- Set up dialog self.setup_panel() self.setModal(True) self.show() self.project_name_input.selectAll()
def make_page(self): toppage = QFrame() toplayout = QVBoxLayout() toppage.setLayout(toplayout) page = QFrame() layout = QFormLayout() page.setLayout(layout) toplayout.addWidget(page) self.edit_lat_offset = QLineEdit() self.edit_lat_offset.setFixedWidth(350) self.edit_lat_offset.textChanged.connect(self.onChange) self.edit_glideslope = QLineEdit() self.edit_glideslope.setFixedWidth(350) self.edit_glideslope.textChanged.connect(self.onChange) self.edit_turn_radius = QLineEdit() self.edit_turn_radius.setFixedWidth(350) self.edit_turn_radius.textChanged.connect(self.onChange) self.edit_direction = QComboBoxNoWheel() self.edit_direction.setFixedWidth(350) self.edit_direction.addItem('left') self.edit_direction.addItem('right') self.edit_direction.currentIndexChanged.connect(self.onChange) self.edit_final_leg = QLineEdit() self.edit_final_leg.setFixedWidth(350) self.edit_final_leg.textChanged.connect(self.onChange) self.edit_alt_bias = QLineEdit() self.edit_alt_bias.setFixedWidth(350) self.edit_alt_bias.textChanged.connect(self.onChange) self.edit_appr_speed = QLineEdit() self.edit_appr_speed.setFixedWidth(350) self.edit_appr_speed.textChanged.connect(self.onChange) self.edit_flare_pitch = QLineEdit() self.edit_flare_pitch.setFixedWidth(350) self.edit_flare_pitch.textChanged.connect(self.onChange) self.edit_flare_time = QLineEdit() self.edit_flare_time.setFixedWidth(350) self.edit_flare_time.textChanged.connect(self.onChange) layout.addRow("<b>TD Lateral Offset (m):</b>", self.edit_lat_offset) layout.addRow("<b>Approach Glideslope (deg):</b>", self.edit_glideslope) layout.addRow("<b>Final Turn Radius (m):</b>", self.edit_turn_radius) layout.addRow("<b>Turn Direction:</b>", self.edit_direction) layout.addRow("<b>Extend Final Leg Len (m):</b>", self.edit_final_leg) layout.addRow("<b>Altitude Bias (ft):</b>", self.edit_alt_bias) layout.addRow("<b>Approach Speed (kt):</b>", self.edit_appr_speed) layout.addRow("<b>Flare Pitch (deg):</b>", self.edit_flare_pitch) layout.addRow("<b>Flare Time (sec):</b>", self.edit_flare_time) # 'Parameter' button bar param_group = QFrame() toplayout.addWidget(param_group) param_layout = QHBoxLayout() param_group.setLayout(param_layout) param_layout.addWidget(QLabel("<b>Commands:</b> ")) update = QPushButton('Update') update.clicked.connect(self.update) param_layout.addWidget(update) revert = QPushButton('Revert') revert.clicked.connect(self.revert) param_layout.addWidget(revert) land = QPushButton('Land Now!') land.clicked.connect(self.task_land) param_layout.addWidget(land) param_layout.addStretch(1) page1 = QFrame() layout1 = QFormLayout() page1.setLayout(layout1) toplayout.addWidget(page1) self.edit_rwy_lon = QLineEdit() self.edit_rwy_lon.setFixedWidth(350) self.edit_rwy_lon.textChanged.connect(self.onChange) self.edit_rwy_lat = QLineEdit() self.edit_rwy_lat.setFixedWidth(350) self.edit_rwy_lat.textChanged.connect(self.onChange) self.edit_rwy_hdg = QLineEdit() self.edit_rwy_hdg.setFixedWidth(350) self.edit_rwy_hdg.textChanged.connect(self.onChange) layout1.addRow("<b>Runway Longitude (deg):</b>", self.edit_rwy_lon) layout1.addRow("<b>Runway Latitude (deg):</b>", self.edit_rwy_lat) layout1.addRow("<b>Runway Heading (deg):</b>", self.edit_rwy_hdg) # 'rwy' button bar rwy_group = QFrame() toplayout.addWidget(rwy_group) rwy_layout = QHBoxLayout() rwy_group.setLayout(rwy_layout) rwy_layout.addWidget(QLabel("<b>Runway Presets:</b> ")) home = QPushButton('Land "HOME"') home.clicked.connect(self.task_rwy_home) rwy_layout.addWidget(home) sprc36 = QPushButton('SPRC 36 (to N)') sprc36.clicked.connect(self.task_rwy_sprc36) rwy_layout.addWidget(sprc36) sprc18 = QPushButton('SPRC 18 (to S)') sprc18.clicked.connect(self.task_rwy_sprc18) rwy_layout.addWidget(sprc18) rwy_layout.addStretch(1) toplayout.addStretch(1) # set initial values self.revert() return toppage
def __init__(self, parent=None): QWidget.__init__(self, parent) self.setWindowFlags(QtCore.Qt.Dialog | QtCore.Qt.WindowSystemMenuHint) self.setWindowModality(QtCore.Qt.WindowModal) global par par = parent global int_lng int_lng = par.interface_lng_val global full_dir full_dir = parent.full_dir self.t1 = MyThread(full_dir) # ------------------------------------Первый блок формы--------------------------------------# self.mesh_choose_lbl = QLabel() self.mesh_choose_lbl_hbox = QHBoxLayout() self.mesh_choose_lbl_hbox.addWidget(self.mesh_choose_lbl) self.radio_1 = QRadioButton() self.radio_1.toggled.connect(self.on_radio_1_clicked) self.radio_2 = QRadioButton() self.radio_2.toggled.connect(self.on_radio_2_clicked) self.mesh_choose_grid = QGridLayout() self.mesh_choose_grid.addWidget(self.radio_1, 0, 0) self.mesh_choose_grid.addWidget(self.radio_2, 0, 1) self.mesh_choose_frame = QFrame() self.mesh_choose_frame.setLayout(self.mesh_choose_grid) self.mesh_choose_hbox = QHBoxLayout() self.mesh_choose_hbox.addWidget(self.mesh_choose_frame) # ------------------------------------Второй блок формы--------------------------------------# self.fmtf_radio = QRadioButton("Импорт 2D-сетки") self.f3Dmtf_radio = QRadioButton("Импорт 3D-сетки") self.import_hbox = QHBoxLayout() self.import_hbox.addWidget(self.fmtf_radio) self.import_hbox.addWidget(self.f3Dmtf_radio) self.mesh_label = QLabel("Путь: ") self.mesh_edit = QLineEdit() self.mesh_edit.setEnabled(False) self.mesh_edit.setFixedSize(290, 25) self.path_button = QPushButton("...") self.path_button.setFixedSize(25, 25) self.import_prs_hbox = QHBoxLayout() self.import_prs_hbox.addWidget(self.mesh_label) self.import_prs_hbox.addWidget(self.mesh_edit) self.import_prs_hbox.addWidget(self.path_button) self.path_button.clicked.connect(self.on_path_choose) self.prs_grid = QGridLayout() self.prs_grid.addLayout(self.import_hbox, 0, 0) self.prs_grid.addLayout(self.import_prs_hbox, 1, 0) self.prs_frame = QFrame() self.prs_frame.setStyleSheet( open("./styles/properties_form_style.qss", "r").read()) self.prs_frame.setLayout(self.prs_grid) self.prs_frame.setEnabled(False) self.prs_frame.setStyleSheet("border-color: darkgray;") self.prs_hbox = QHBoxLayout() self.prs_hbox.addWidget(self.prs_frame) # ------------------------------------Третий блок формы--------------------------------------# self.chc_label = QLabel() self.chc_label.setEnabled(False) self.chc_lbl_hbox = QHBoxLayout() self.chc_lbl_hbox.addWidget(self.chc_label) self.nf_radio = QRadioButton() self.nf_radio.toggled.connect(self.on_nf_clicked) self.cf_radio = QRadioButton() self.cf_radio.toggled.connect(self.on_cf_clicked) self.icon = self.style().standardIcon(QStyle.SP_DirOpenIcon) self.chc_button = QPushButton() self.chc_button.setFixedSize(30, 30) self.chc_button.setIcon(self.icon) self.chc_button.setEnabled(False) self.chc_button.clicked.connect(self.on_chc_clicked) self.chc_grid = QGridLayout() self.chc_grid.addWidget(self.nf_radio, 0, 0) self.chc_grid.addWidget(self.cf_radio, 0, 1) self.chc_grid.addWidget(self.chc_button, 0, 2) self.chc_frame = QFrame() self.chc_frame.setFixedWidth(400) self.chc_frame.setEnabled(False) self.chc_frame.setStyleSheet("border-color: darkgray;") self.chc_frame.setLayout(self.chc_grid) self.chc_hbox = QHBoxLayout() self.chc_hbox.addWidget(self.chc_frame) # ------------------------------------Четвертый блок формы--------------------------------------# self.mesh_type_label = QLabel('Выберите тип сетки:') self.bm = QRadioButton("blockMesh") self.bm.setChecked(True) self.shm = QRadioButton("snappyHexMesh") self.mesh_type_vbox = QVBoxLayout() self.mesh_type_vbox.addWidget(self.bm) self.mesh_type_vbox.addWidget(self.shm) self.mesh_label = QLabel() self.mesh_name = QLineEdit() self.mesh_name.setFixedSize(214, 25) regexp = QtCore.QRegExp('[А-яА-Яa-zA-Z0-9\_]+') validator = QtGui.QRegExpValidator(regexp) self.mesh_name.setValidator(validator) self.prj_path_label = QLabel() self.prj_path_name = QLineEdit() self.prj_path_name.setEnabled(False) self.prj_path_name.setFixedSize(214, 25) self.prj_grid = QGridLayout() self.prj_grid.addWidget(self.mesh_type_label, 0, 0, alignment=QtCore.Qt.AlignCenter) self.prj_grid.addLayout(self.mesh_type_vbox, 0, 1, alignment=QtCore.Qt.AlignCenter) self.prj_grid.addWidget(self.mesh_label, 1, 0, alignment=QtCore.Qt.AlignCenter) self.prj_grid.addWidget(self.mesh_name, 1, 1, alignment=QtCore.Qt.AlignCenter) self.prj_grid.addWidget(self.prj_path_label, 2, 0, alignment=QtCore.Qt.AlignCenter) self.prj_grid.addWidget(self.prj_path_name, 2, 1, alignment=QtCore.Qt.AlignCenter) self.prj_frame = QFrame() self.prj_frame.setFixedWidth(400) self.prj_frame.setEnabled(False) self.prj_frame.setStyleSheet("border-color: darkgray;") self.prj_frame.setFrameShape(QFrame.Panel) self.prj_frame.setFrameShadow(QFrame.Sunken) self.prj_frame.setLayout(self.prj_grid) self.prj_grid_vbox = QVBoxLayout() self.prj_grid_vbox.addWidget(self.prj_frame) # ---------------------Кнопки сохранения и отмены и их блок-------------------------# self.save_button = QPushButton() self.save_button.setFixedSize(80, 25) self.save_button.clicked.connect(self.on_save_clicked) self.save_button.setEnabled(False) self.cancel_button = QPushButton() self.cancel_button.setFixedSize(80, 25) self.cancel_button.clicked.connect(self.on_cancel_clicked) self.buttons_hbox = QHBoxLayout() self.buttons_hbox.addWidget(self.save_button) self.buttons_hbox.addWidget(self.cancel_button) # -------------------------Фрейм формы---------------------------# self.form_grid = QGridLayout() self.form_grid.addLayout(self.mesh_choose_hbox, 0, 0, alignment=QtCore.Qt.AlignCenter) self.form_grid.addLayout(self.prs_hbox, 1, 0, alignment=QtCore.Qt.AlignCenter) self.form_grid.addLayout(self.chc_lbl_hbox, 2, 0, alignment=QtCore.Qt.AlignCenter) self.form_grid.addLayout(self.chc_hbox, 3, 0, alignment=QtCore.Qt.AlignCenter) self.form_grid.addLayout(self.prj_grid_vbox, 4, 0, alignment=QtCore.Qt.AlignCenter) self.form_grid.addLayout(self.buttons_hbox, 5, 0, alignment=QtCore.Qt.AlignCenter) self.form_frame = QFrame() self.form_frame.setStyleSheet( open("./styles/properties_form_style.qss", "r").read()) self.form_frame.setLayout(self.form_grid) self.form_vbox = QVBoxLayout() self.form_vbox.addWidget(self.form_frame) # --------------------Размещение на форме всех компонентов---------# self.form = QFormLayout() self.form.addRow(self.form_vbox) self.setLayout(self.form) # --------------------Определяем параметры интерфейса окна---------# if int_lng == 'Russian': self.radio_1.setText("Внешняя сетка") self.radio_2.setText("OpenFOAM-сетка") self.fmtf_radio.setText("Импорт 2D-сетки") self.f3Dmtf_radio.setText("Импорт 3D-сетки") self.chc_label.setText( "Создайте новую сетку или откройте существующую") self.nf_radio.setText("Создать новую") self.cf_radio.setText("Открыть существующую") self.mesh_type_label.setText("Выберите тип сетки:") self.mesh_label.setText("Название сетки:") self.prj_path_label.setText("Путь:") self.save_button.setText("Сохранить") self.cancel_button.setText("Отмена") elif int_lng == 'English': self.radio_1.setText("External mesh") self.radio_2.setText("OpenFOAM-mesh") self.fmtf_radio.setText("2D-mesh import") self.f3Dmtf_radio.setText("3D-mesh import") self.chc_label.setText( "Create a new mesh or open an existing mesh") self.nf_radio.setText("Create new mesh") self.cf_radio.setText("Open existing mesh") self.mesh_type_label.setText("Select mesh type:") self.mesh_label.setText("Mesh name:") self.prj_path_label.setText("Path:") self.save_button.setText("Save") self.cancel_button.setText("Cancel")
def __init__(self, parent=None): super().__init__(parent=parent) self.setTitle("P&L Wizard - Select Workbooks") self.setSubTitle( "Use the browse buttons below to select the QuickBooks spreadsheet" " (source) and then the Popeyes spreadsheet. Then select a map file from" " the drop down list for the corresponding QuickBooks spreadsheet. Each" " company will have a separate map file. <b>Make sure neither workbook is" " already open in Excel before clicking Next!</b>") self.mainLayout = QFormLayout(self) self.setLayout(self.mainLayout) self.setCommitPage(True) self.setButtonText(QWizard.CommitButton, "Load Spreadsheets") self.sourceBookPath = QLineEdit() browseSourceBook = QPushButton("Browse ...") browseSourceBook.clicked.connect(self.openSrcBook) srcLayout = QHBoxLayout() srcLayout.addWidget(self.sourceBookPath) srcLayout.addWidget(browseSourceBook) self.mainLayout.addRow("Source Workbook", srcLayout) self.destBookPath = QLineEdit() browseDestBook = QPushButton("Browse ...", self) browseDestBook.clicked.connect(self.openDstBook) dstLayout = QHBoxLayout() dstLayout.addWidget(self.destBookPath) dstLayout.addWidget(browseDestBook) self.mainLayout.addRow("Destination Workbook", dstLayout) # map files self.mapFileComboBox = QComboBox() for entry in os.scandir("maps"): # XXX: this should not be hardcoded name = os.path.basename(os.path.splitext(entry.name)[0]).title() self.mapFileComboBox.addItem(name, entry.path) self.mainLayout.addRow("Map File", self.mapFileComboBox) self.registerField(SOURCE_FIELD_NAME + "*", self.sourceBookPath) self.registerField(DESTINATION_FIELD_NAME + "*", self.destBookPath) self.invalidSrc = QLabel( "<font color='red'>Unable to find source workbook.</font>") self.invalidDst = QLabel( "<font color='red'>Unable to find destination workbook.</font>") self.invalidMap = QLabel( "<font color='red'>Unable to find map file.</font>") self.invalidSrc.hide() self.invalidDst.hide() self.invalidMap.hide() self.mainLayout.addWidget(self.invalidSrc) self.mainLayout.addWidget(self.invalidDst) self.mainLayout.addWidget(self.invalidMap)
def __init__(self, flags=None, *args, **kwargs): super().__init__(flags, *args, **kwargs) with open('Client/src/style.qss', 'r') as style_file: self.setStyleSheet(style_file.read()) layout = QVBoxLayout() title = QLabel('Создание новой учетной записи Преподавателя') layout.addWidget(title) form = QFormLayout() login = QLineEdit() form.addRow(QLabel('Логин*'), login) password = QLineEdit() password.setEchoMode(QLineEdit.Password) form.addRow(QLabel('Пароль*'), password) last_name = QLineEdit() form.addRow(QLabel('Фамилия*'), last_name) first_name = QLineEdit() form.addRow(QLabel('Имя*'), first_name) middle_name = QLineEdit() form.addRow(QLabel('Отчество'), middle_name) email = QLineEdit() form.addRow(QLabel('email'), email) agreement = QCheckBox() form.addRow( agreement, QLink('Я даю согласие на обработку персональных данных', 'http://bisitor.itut.ru/personal_agreement')) layout.addLayout(form) btn_layout = QHBoxLayout() ok_btn = QPushButton('Продолжить') btn_layout.addWidget(ok_btn) cancel_btn = QPushButton('Отменить') btn_layout.addWidget(cancel_btn) layout.addLayout(btn_layout) def on_ok(): def on_success(*args): QMessageBox().information( self, 'Создание учетной записи', 'Создание учетной записи прошло успешно') self.close() def on_error(response): if response.message == 'login': QMessageBox().information( self, 'Созданиеучетной записи', 'Логин уже занят. Введите дургой логин') login.setText('') else: QMessageBox().information( self, 'Созданиеучетной записи', f'Неизвестная ошибка {response.message}') print(response.message) val = { 'Логин': login.text() != '', 'Пароль': password.text() != '', 'Фамилия': last_name.text() != '', 'Имя': first_name.text() != '', 'Согласие': agreement.isChecked() } if any(not v for v in val.values()): QMessageBox().information( self, 'Необходимо заполнить все поля', f'Для продолжения необходимо заполнить поля {", ".join([key for key, value in val.items() if not value])}' ) else: self.manager = ProfessorCreateAPI.create( { 'login': login.text(), 'password': password.text(), 'last_name': last_name.text(), 'first_name': first_name.text(), 'middle_name': middle_name.text(), 'email': email.text() }, on_success, on_error) ok_btn.clicked.connect(on_ok) def on_cancel(): self.close() cancel_btn.clicked.connect(on_cancel) self.setLayout(layout)
def assemble_quick_add_box(self): devs = self.mi.get_quick_add_devices() if devs is None or len(devs) == 0: return resetpanel_box = self.ui.widget layout_quick_add = resetpanel_box.ui.layout_quick_add def add_to_list(): pvs = cb_quick_list.currentData() resetpanel_box.addPv(pvs, force_active=True) def add_from_txt(le): pv = le.text() if pv: resetpanel_box.addPv(pv, force_active=True) def clear_list(): resetpanel_box.pvs = [] resetpanel_box.devices = [] resetpanel_box.ui.tableWidget.setRowCount(0) layout_buttons = QVBoxLayout() pb_clear_dev = QPushButton(resetpanel_box) pb_clear_dev.setText("Clear Devices") pb_clear_dev.setMaximumWidth(100) pb_clear_dev.clicked.connect(clear_list) pb_add_dev = QPushButton(resetpanel_box) pb_add_dev.setText("Add Devices") pb_add_dev.setStyleSheet("color: orange") pb_add_dev.clicked.connect(add_to_list) pb_add_dev.setMaximumWidth(100) lb_from_list = QLabel() lb_from_list.setText("From List: ") lb_from_list.setMaximumWidth(75) cb_quick_list = QComboBox() cb_quick_list.addItem("", []) cb_quick_list.setMinimumWidth(200) for display, itms in devs.items(): cb_quick_list.addItem(display, itms) if len(devs.items()) >= 1: cb_quick_list.setCurrentIndex(1) lb_manually = QLabel() lb_manually.setText("Or Manually Enter: ") lb_manually.setMaximumWidth(75) le_manually = QLineEdit() le_manually.setMinimumWidth(200) le_manually.returnPressed.connect(functools.partial(add_from_txt, le_manually)) layout_buttons.addWidget(pb_add_dev) layout_buttons.addWidget(pb_clear_dev) frm_layout = QFormLayout() frm_layout.addRow(lb_from_list, cb_quick_list) frm_layout.addRow(lb_manually, le_manually) layout_quick_add.addLayout(layout_buttons) layout_quick_add.addLayout(frm_layout)
def __init__(self, parent): QWidget.__init__(self) self.CntrPane = parent self.PaneIdx = 3 Font_titl = QFont() Font_titl.setPointSize(10) Font_titl.setBold(True) Font_norm = QFont() Font_norm.setPointSize(8) #--Titolo label empty_lbl_1 = QLabel(" ") empty_lbl_1.setFixedHeight(50) empty_lbl_2 = QLabel(" ") empty_lbl_2.setFixedHeight(50) scr_rslts_lbl = QLabel("SCORING E RISULTATI") scr_rslts_lbl.setFont(Font_titl) scr_rslts_lbl.setFixedHeight(50) #--Utente labels paz_titl_lbl = QLabel("Utente") paz_titl_lbl.setFont(Font_titl) paz_nome_lbl = QLabel("Nome: ") paz_nome_lbl.setFont(Font_norm) paz_cognome_lbl = QLabel("Cognome: ") paz_cognome_lbl.setFont(Font_norm) paz_anni_lbl = QLabel("Anni: ") paz_anni_lbl.setFont(Font_norm) #--PSI labels psi_lbl = QLabel("P.S.I., Parenting Stress Index") psi_lbl.setFont(Font_titl) distress_gen_lbl = QLabel("Distress genitoriale: ") distress_gen_lbl.setFont(Font_norm) int_disf_lbl = QLabel("Interazione gen/bamb disfunzionale: ") int_disf_lbl.setFont(Font_norm) bamb_dif_lbl = QLabel("Bambino difficile: ") bamb_dif_lbl.setFont(Font_norm) risp_dif_lbl = QLabel("Risposta difensiva: ") risp_dif_lbl.setFont(Font_norm) stress_tot_lbl = QLabel("Stress totale: ") stress_tot_lbl.setFont(Font_norm) #--SDQ labels sdq_lbl = QLabel("S.D.Q., Strenghts and Difficulties Questionnaire") sdq_lbl.setFont(Font_titl) sint_emoz_lbl = QLabel("Sintomi emozionali: ") sint_emoz_lbl.setFont(Font_norm) prob_comp_lbl = QLabel("Problemi di comportamento: ") prob_comp_lbl.setFont(Font_norm) iperat_dis_lbl = QLabel("Iperattivita/disattenzione: ") iperat_dis_lbl.setFont(Font_norm) rapp_pari_lbl = QLabel("Rapporto con i pari: ") rapp_pari_lbl.setFont(Font_norm) comp_pro_lbl = QLabel("Comportamenti prosociali: ") comp_pro_lbl.setFont(Font_norm) tot_diff_lbl = QLabel("Totale difficoltà: ") tot_diff_lbl.setFont(Font_norm) #--Servizi labels servizi_lbl = QLabel("Servizi consigliati") servizi_lbl.setFont(Font_titl) servizi_soc_lbl = QLabel("Servizi sociali: ") servizi_soc_lbl.setFont(Font_norm) psi_cli_adu_lbl = QLabel("Psicologia clinica adulti: ") psi_cli_adu_lbl.setFont(Font_norm) int_giud_lbl = QLabel("Intervento giudiziario: ") int_giud_lbl.setFont(Font_norm) npia_lbl = QLabel("NPIA: ") npia_lbl.setFont(Font_norm) consult_lbl = QLabel("Consultorio: ") consult_lbl.setFont(Font_norm) csm_lbl = QLabel("CSM: ") csm_lbl.setFont(Font_norm) sert_lbl = QLabel("SERT: ") sert_lbl.setFont(Font_norm) ldv_lbl = QLabel("LDV: ") ldv_lbl.setFont(Font_norm) #--Buttons grafici_btn = QPushButton("Grafici") ext_btn = QPushButton("Exit") empty_lbl = QLabel(" ") #--Layouts Vlayout = QVBoxLayout() Form = QFormLayout() Buttons = QHBoxLayout() Titl_lyt = QHBoxLayout() #--Positioning Vlayout.addLayout(Titl_lyt) Vlayout.addLayout(Form) Vlayout.addLayout(Buttons) # --Output's instances for Labels nome = self.calc.nome nome_otp = QLabel(nome) nome_otp.setFont(Font_norm) #--Positioning Form Layout Form.addRow(paz_titl_lbl) Form.addRow(paz_nome_lbl, nome_otp) Form.addRow(paz_cognome_lbl) Form.addRow(paz_anni_lbl) Form.addRow(psi_lbl) Form.addRow(distress_gen_lbl) Form.addRow(int_disf_lbl) Form.addRow(bamb_dif_lbl) Form.addRow(risp_dif_lbl) Form.addRow(stress_tot_lbl) Form.addRow(sdq_lbl) Form.addRow(sint_emoz_lbl) Form.addRow(prob_comp_lbl) Form.addRow(iperat_dis_lbl) Form.addRow(rapp_pari_lbl) Form.addRow(comp_pro_lbl) Form.addRow(tot_diff_lbl) Form.addRow(servizi_lbl) Form.addRow(servizi_soc_lbl) Form.addRow(psi_cli_adu_lbl) Form.addRow(int_giud_lbl) Form.addRow(npia_lbl) Form.addRow(consult_lbl) Form.addRow(csm_lbl) Form.addRow(sert_lbl) Form.addRow(ldv_lbl) #--Positioning Buttons Layout Buttons.addStretch(1) Buttons.addWidget(grafici_btn) Buttons.addWidget(empty_lbl) Buttons.addWidget(ext_btn) #--Positioning Title Layout Titl_lyt.addWidget(empty_lbl_1) Titl_lyt.addWidget(scr_rslts_lbl) Titl_lyt.addWidget(empty_lbl_2) self.setLayout(Vlayout)
def __init__(self, parent=None): super(ToolsPage, self).__init__(parent) self.parent = parent self.setObjectName('settingstoolspage') self.ffmpegpath = QLineEdit( QDir.toNativeSeparators(self.parent.service.backends.ffmpeg), self) self.ffmpegpath.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) ffmpegbutton = QPushButton(self) ffmpegbutton.setIcon(QIcon(':/images/folder.png')) ffmpegbutton.setToolTip('Set FFmpeg path') ffmpegbutton.setCursor(Qt.PointingHandCursor) ffmpegbutton.clicked.connect( lambda c, backend='FFmpeg': self.setPath(backend, self.ffmpegpath)) ffmpeglayout = QHBoxLayout() ffmpeglayout.addWidget(self.ffmpegpath) ffmpeglayout.addWidget(ffmpegbutton) self.ffprobepath = QLineEdit( QDir.toNativeSeparators(self.parent.service.backends.ffprobe), self) self.ffprobepath.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) ffprobebutton = QPushButton(self) ffprobebutton.setIcon(QIcon(':/images/folder.png')) ffprobebutton.setToolTip('Set FFprobe path') ffprobebutton.setCursor(Qt.PointingHandCursor) ffprobebutton.clicked.connect(lambda c, backend='FFprobe': self. setPath(backend, self.ffprobepath)) ffprobelayout = QHBoxLayout() ffprobelayout.addWidget(self.ffprobepath) ffprobelayout.addWidget(ffprobebutton) self.mediainfopath = QLineEdit( QDir.toNativeSeparators(self.parent.service.backends.mediainfo), self) self.mediainfopath.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred) mediainfobutton = QPushButton(self) mediainfobutton.setIcon(QIcon(':/images/folder.png')) mediainfobutton.setToolTip('Set MediaInfo path') mediainfobutton.setCursor(Qt.PointingHandCursor) mediainfobutton.clicked.connect(lambda c, backend='MediaInfo': self. setPath(backend, self.mediainfopath)) mediainfolayout = QHBoxLayout() mediainfolayout.addWidget(self.mediainfopath) mediainfolayout.addWidget(mediainfobutton) resetbutton = QPushButton('Reset to Defaults', self) resetbutton.setObjectName('resetpathsbutton') resetbutton.setToolTip('Reset to default paths') resetbutton.setCursor(Qt.PointingHandCursor) resetbutton.clicked.connect(self.resetPaths) resetlayout = QHBoxLayout() resetlayout.addStretch(1) resetlayout.addWidget(resetbutton) pathsLayout = QFormLayout() pathsLayout.setContentsMargins(11, 11, 11, 20) pathsLayout.setVerticalSpacing(20) pathsLayout.addRow('FFmpeg:', ffmpeglayout) pathsLayout.addRow('FFprobe:', ffprobelayout) pathsLayout.addRow('MediaInfo:', mediainfolayout) pathsLayout.addRow('', resetlayout) pathsGroup = QGroupBox('Paths') pathsGroup.setLayout(pathsLayout) mainLayout = QVBoxLayout() mainLayout.setSpacing(10) mainLayout.addWidget(pathsGroup) mainLayout.addStretch(1) self.setLayout(mainLayout)
def __init__(self, parent, size): super().__init__(parent) self.size = size self.resize(size[0], size[1]) self._gradient_widget = QWidget() self._gradient_widget.resize(size[0] / 2, size[1]) self._create_linear_gradient() self.boxcar_form = QFormLayout() self.layout = QVBoxLayout() column_layout = QHBoxLayout() # For the densities and gradient self.layout.setContentsMargins(0, 0, 0, 0) # Add the headers for the two columns we will have headers = QHBoxLayout() headers.setContentsMargins(0, 0, 0, 0) # Add header for chassis density label_chassis_densities = QLabel() label_chassis_densities.setText('Chassis Density') label_chassis_densities.setAlignment(Qt.AlignHCenter | Qt.AlignBottom) headers.addWidget(label_chassis_densities) # Add spacer headers.addStretch(1) # Add header for wheel density label_wheel_density = QLabel() label_wheel_density.setText('Wheel Density') label_wheel_density.setAlignment(Qt.AlignHCenter | Qt.AlignBottom) headers.addWidget(label_wheel_density) # Add headers self.layout.addLayout(headers) # Add Chassis Density stuff chassis_density_vbox = QVBoxLayout() chassis_density_vbox.setContentsMargins(0, 0, 0, 0) min_chassis_density = get_boxcar_constant('min_chassis_density') max_chassis_density = get_boxcar_constant('max_chassis_density') chassis_range = max_chassis_density - min_chassis_density num_slices = 10 # Number of sections to add chassis_slices = [ (chassis_range) / (num_slices - 1) * i + min_chassis_density for i in range(num_slices) ] for chassis_slice in chassis_slices: label = QLabel() text = '{:.2f} -'.format(chassis_slice) label.setAlignment(Qt.AlignRight | Qt.AlignTop) label.setText(text) chassis_density_vbox.addWidget(label) # Add the VBox to the layout column_layout.addLayout(chassis_density_vbox) # Add the actual gradient but add it to a VBox to be cheeky and set stretch at the bottom gradient_vbox = QVBoxLayout() gradient_vbox.addWidget(self._gradient_widget, 15) column_layout.addLayout(gradient_vbox, 3) # Add Wheel Density stufff wheel_density_vbox = QVBoxLayout() wheel_density_vbox.setContentsMargins(0, 0, 0, 0) min_wheel_density = get_boxcar_constant('min_wheel_density') max_wheel_density = get_boxcar_constant('max_wheel_density') wheel_range = max_wheel_density - min_wheel_density num_slices = 10 # Number of sections to add (I'm keeping it the same as the chassis density for now) wheel_slices = [ (wheel_range) / (num_slices - 1) * i + min_wheel_density for i in range(num_slices) ] for i, wheel_slice in enumerate(wheel_slices): label = QLabel() text = '- {:.2f}'.format(wheel_slice) label.setAlignment(Qt.AlignLeft | Qt.AlignTop) label.setText(text) wheel_density_vbox.addWidget(label) # Add the VBox to the layout column_layout.addLayout(wheel_density_vbox) # Add column_layout to the layout self.layout.addLayout(column_layout, 5) self.layout.addStretch(1) # Add the boxcar settings self._add_boxcar_settings() # Set overall layout self.setLayout(self.layout)
def initUI(self): try: self.setWindowState(QtCore.Qt.WindowMaximized) except: self.setGeometry(10, 30, 1350, 750) self.setWindowTitle('Dana') self.setWindowIcon( QIcon('download.png') ) # Have this png at same directory as this code is. Icon Image oImage = QImage( "download(1).jpg" ) # Have this png at same directory as this code is. Background Image sImage = oImage.scaled(QSize(1350, 750)) palette = QPalette() palette.setBrush(10, QBrush(sImage)) self.setPalette(palette) saveButton = QPushButton("ADD/MODIFY", self) deleteButton = QPushButton("DELETE", self) clearButton = QPushButton("CLEAR", self) TrainButton = QPushButton("Train DANA", self) saveButton.setFont(QtGui.QFont("Calibri", 13)) deleteButton.setFont(QtGui.QFont("Calibri", 13)) clearButton.setFont(QtGui.QFont("Calibri", 13)) TrainButton.setFont(QtGui.QFont("Calibri", 13)) saveButton.move(100, 690) clearButton.move(260, 690) TrainButton.move(420, 690) saveButton.clicked.connect(self.saveClicked) deleteButton.clicked.connect(self.deleteClicked) clearButton.clicked.connect(self.clearClicked) TrainButton.clicked.connect(self.TrainClicked) saveButton.setStyleSheet("background-color: #F7CE16") deleteButton.setStyleSheet("background-color: #F7CE16") clearButton.setStyleSheet("background-color: #F7CE16") TrainButton.setStyleSheet("background-color: #F7CE16") headerfont = QtGui.QFont("Cambria", 13, QtGui.QFont.Bold) l1 = QLabel("BOOK ID: ") l1.setFont(headerfont) l1.setMinimumHeight(30) l1.setFixedWidth(180) text1 = QLineEdit() text1.setFixedWidth(250) text1.setMinimumHeight(30) text1.setPlaceholderText("The Library Book ID ") text1.setFont(QtGui.QFont("Times", 11)) l2 = QLabel("AUTHOR: ") l2.setFont(headerfont) l2.setMinimumHeight(30) l2.setFixedWidth(180) text2 = QLineEdit() text2.setFixedWidth(600) text2.setMinimumHeight(30) text2.setPlaceholderText(" EX: Sumitra Arora ") text2.setFont(QtGui.QFont("Times", 11)) l3 = QLabel("TITLE: ") l3.setFont(headerfont) l3.setMinimumHeight(30) l3.setFixedWidth(180) text3 = QLineEdit() text3.setFixedWidth(600) text3.setMinimumHeight(30) text3.setPlaceholderText(" EX: Artificial Intelligence,C,C++ ") text3.setFont(QtGui.QFont("Times", 11)) l4 = QLabel("PUBLICATION: ") l4.setFont(headerfont) l4.setMinimumHeight(30) l4.setFixedWidth(180) text4 = QLineEdit() text4.setFixedWidth(600) text4.setMinimumHeight(30) text4.setPlaceholderText(" EX: TATA MCGRAW HILL ") text4.setFont(QtGui.QFont("Times", 11)) l5 = QLabel("EDITION: ") l5.setFont(headerfont) l5.setMinimumHeight(30) l5.setFixedWidth(180) text5 = QLineEdit() text5.setFixedWidth(250) text5.setMinimumHeight(30) text5.setPlaceholderText(" EX: 1,2,3 ") text5.setFont(QtGui.QFont("Times", 11)) l6 = QLabel("ISSUE STATUS: ") l6.setFont(headerfont) l6.setMinimumHeight(30) l6.setFixedWidth(200) hboxperiod = QHBoxLayout() hboxperiod.setSpacing(70) r1 = QRadioButton("BOOK ISSUED") r1.setFont(QtGui.QFont("Calibri", 9, QtGui.QFont.Bold)) r1.setMinimumHeight(30) r2 = QRadioButton("NOT ISSUED") r2.setFont(QtGui.QFont("Calibri", 9, QtGui.QFont.Bold)) r2.setMinimumHeight(30) r2.setChecked(True) widgetperiod = QWidget(self) groupperiod = QButtonGroup(widgetperiod) groupperiod.addButton(r1) groupperiod.addButton(r2) hboxperiod.addWidget(r1) hboxperiod.addWidget(r2) hboxperiod.addStretch() l7 = QLabel("PRICE: ") l7.setFont(headerfont) l7.setMinimumHeight(30) l7.setFixedWidth(200) text7 = QLineEdit() text7.setFixedWidth(250) text7.setMinimumHeight(30) text7.setPlaceholderText("Price of the Book") text7.setFont(QtGui.QFont("Times", 11)) l8 = QLabel("ROW NUMBER: ") l8.setFont(headerfont) l8.setMinimumHeight(30) l8.setFixedWidth(200) text8 = QLineEdit() text8.setFixedWidth(250) text8.setMinimumHeight(30) text8.setPlaceholderText("Start counting from Door") text8.setFont(QtGui.QFont("Times", 11)) l9 = QLabel("COLUMN NUMBER: ") l9.setFont(headerfont) l9.setMinimumHeight(30) l9.setFixedWidth(200) text9 = QLineEdit() text9.setFixedWidth(250) text9.setMinimumHeight(30) text9.setPlaceholderText("Start counting from the Help Desk") text9.setFont(QtGui.QFont("Times", 11)) l10 = QLabel("SHELF PARTION NUMBER: ") l10.setFont(headerfont) l10.setMinimumHeight(30) l10.setFixedWidth(200) text10 = QLineEdit() text10.setFixedWidth(250) text10.setMinimumHeight(30) text10.setPlaceholderText("Start counting from top of the shelf") text10.setFont(QtGui.QFont("Times", 11)) l11 = QLabel("CLASSIFYING SUBJECT: ") l11.setFont(headerfont) l11.setMinimumHeight(30) l11.setFixedWidth(180) text11 = QLineEdit() text11.setFixedWidth(600) text11.setMinimumHeight(30) text11.setPlaceholderText( " EX: Mathematics/Science/Computer Science or others.") text11.setFont(QtGui.QFont("Times", 11)) text12 = QLineEdit() text12.setFixedWidth(600) text12.setMinimumHeight(30) text12.setPlaceholderText( " Enter the BOOK ID and Press the Delete Button to delete the data of the book" ) text12.setFont(QtGui.QFont("Times", 11)) fbox = QFormLayout() fbox.setVerticalSpacing(27) fbox.setHorizontalSpacing(30) fbox.addRow(l1, text1) fbox.addRow(l2, text2) fbox.addRow(l3, text3) fbox.addRow(l4, text4) fbox.addRow(l5, text5) fbox.addRow(l11, text11) fbox.addRow(l6, hboxperiod) fbox.addRow(l7, text7) fbox.addRow(l8, text8) fbox.addRow(l9, text9) fbox.addRow(l10, text10) fbox.addRow(deleteButton, text12) self.setLayout(fbox) self.lineedits = [ text1, text2, text3, text4, text5, text7, text8, text9, text10, text11 ] self.deletelineedit = [text12] self.radiobutton = [r1, r2] self.show()
def stack1UI(self): layout = QFormLayout() layout.addRow("Name", QLineEdit()) layout.addRow("Address", QLineEdit()) #self.setTabText(0,"Contact Details") self.stack1.setLayout(layout)