def __init__(self, actions: [Action]): """ Init self with an ordered list of instances of the class Action. :param actions: The list of instances of the class Action one wants to create buttons from. """ super().__init__() # TODO: make self.buttons a property? self.buttons = [] main_layout = QHBoxLayout() main_layout.setContentsMargins(0, 0, 0, 0) for action in actions: action_button = ActionButton(action) main_layout.addWidget(action_button) self.buttons.append(action_button) main_layout.addStretch() self.setLayout(main_layout)
def __init__(self): super().__init__() # Some buttons w = QWidget() l = QHBoxLayout() w.setLayout(l) btn_stop = QPushButton("Stop") btn_pause = QPushButton("Pause") btn_resume = QPushButton("Resume") l.addWidget(btn_stop) l.addWidget(btn_pause) l.addWidget(btn_resume) self.setCentralWidget(w) # Create a statusbar. self.status = self.statusBar() self.progress = QProgressBar() self.status.addPermanentWidget(self.progress) # Thread runner self.threadpool = QThreadPool() # Create a runner self.runner = JobRunner() self.runner.signals.progress.connect(self.update_progress) self.threadpool.start(self.runner) btn_stop.pressed.connect(self.runner.kill) btn_pause.pressed.connect(self.runner.pause) btn_resume.pressed.connect(self.runner.resume) self.show()
def _setupStaticSelector(self): staticSelectionWidget = QWidget() staticSelectionLayout = QHBoxLayout() staticSelectionLayout.setContentsMargins(0, 0, 0, 0) staticSelectionLayout.setSpacing(utils.dpiScale(2)) self.staticSelector = QListWidget() self.staticSelector.setFixedHeight(self.LIST_BOX_HEIGHT) staticSelectionLayout.addWidget(self.staticSelector) # Re-populate the static selection list view with the previously stored value staticSelections = self.item().model.getSelector().getStaticSelection() staticSelectionList = staticSelections.split( ) if staticSelections is not None else list() self.staticSelector.addItems(staticSelectionList) # Add the drag/drop buttons dragDropButtonLayout = QVBoxLayout() dragDropButtonLayout.setSpacing(utils.dpiScale(2)) dragDropButtonLayout.setContentsMargins(0, 0, 0, 0) dragDropButtonWidget = QWidget() staticSelectionLayout.addWidget(dragDropButtonWidget) dragDropButtonWidget.setLayout(dragDropButtonLayout) staticSelectionWidget.setLayout(staticSelectionLayout) self.addToCollectionGroupBoxLayout.addRow("", staticSelectionWidget)
def __init__(self, image, parent=None): super(ContrastWidget, self).__init__(parent) self.algo_combo = QComboBox() self.algo_combo.addItems( [self.tr('Histogram Error'), self.tr('Channel Similarity'), self.tr('Joint probability')]) self.algo_combo.setToolTip(self.tr('Joint Probability merges Histogram Error and Channel Similarity')) self.algo_combo.setCurrentIndex(2) self.block_combo = QComboBox() self.block_combo.addItems(['32', '64', '128', '256']) self.block_combo.setCurrentIndex(1) self.block_combo.setToolTip(self.tr('Size of analyzed blocks')) self.process_button = QPushButton(self.tr('Process')) self.process_button.setToolTip(self.tr('Perform contrast enhancement analysis')) top_layout = QHBoxLayout() top_layout.addWidget(QLabel(self.tr('Algorithm:'))) top_layout.addWidget(self.algo_combo) top_layout.addWidget(QLabel(self.tr('Block size:'))) top_layout.addWidget(self.block_combo) top_layout.addWidget(self.process_button) top_layout.addStretch() self.image = image self.viewer = ImageViewer(self.image, self.image) self.error = self.chsim = self.joint = None self.canceled = False self.process_button.clicked.connect(self.process) self.algo_combo.currentIndexChanged.connect(self.choose) self.block_combo.currentIndexChanged.connect(self.reset) main_layout = QVBoxLayout() main_layout.addLayout(top_layout) main_layout.addWidget(self.viewer) self.setLayout(main_layout)
def __init__(self, parent=None): super(ReverseWidget, self).__init__(parent) self.tineye_radio = QRadioButton(self.tr('TinEye')) self.tineye_radio.setIcon(QIcon('icons/tineye.png')) self.google_radio = QRadioButton(self.tr('Google')) self.google_radio.setIcon(QIcon('icons/google.svg')) self.bing_radio = QRadioButton(self.tr('Bing')) self.bing_radio.setIcon(QIcon('icons/bing.svg')) self.root_radio = QRadioButton(self.tr('RootAbout')) self.root_radio.setIcon(QIcon('icons/rootabout.png')) self.karma_radio = QRadioButton(self.tr('KarmaDecay')) self.karma_radio.setIcon(QIcon('icons/karmadecay.jpg')) self.tineye_radio.setChecked(True) self.last_radio = self.tineye_radio self.web_view = QWebEngineView() self.choose() self.tineye_radio.toggled.connect(self.choose) self.google_radio.toggled.connect(self.choose) self.bing_radio.toggled.connect(self.choose) self.root_radio.toggled.connect(self.choose) self.karma_radio.toggled.connect(self.choose) top_layout = QHBoxLayout() top_layout.addWidget(QLabel(self.tr('Search engine:'))) top_layout.addWidget(self.tineye_radio) top_layout.addWidget(self.google_radio) top_layout.addWidget(self.bing_radio) top_layout.addWidget(self.root_radio) top_layout.addWidget(self.karma_radio) top_layout.addStretch() main_layout = QVBoxLayout() main_layout.addLayout(top_layout) main_layout.addWidget(self.web_view) self.setLayout(main_layout)
def __init__(self, parent=None, view=None): super().__init__(parent) self._parent = parent self._view = view self._layout = QHBoxLayout(self) self.setStyleSheet(""" QLineEdit{background-color: #232323; border: 1px solid #999999;} QLineEdit:focus {border: 1px solid #FFFFFF;} """) # Search Bar self._search_bar = QLineEdit(self) self._view.urlChanged.connect(self.setNewUrlOnPageChange) self._find_text_entry = QLineEdit(self) self._find_text_entry.textChanged.connect(self.textEditFindWebText) self.addAction(self._view.page().action(self._view.page().Reload)) #self.addAction(self._parent._view.page().action(self._parent._view.page().Back)) #self.addAction(self._parent._view.page().action(self._parent._view.page().Forward)) self._find_text_entry.setMaximumWidth(150) self._find_text_button = QPushButton(self) self._find_text_button.setFlat(True) self._find_text_label = QLabel(" Find text:") self._find_text_button.setIcon(QIcon(os.path.join('images', 'find.png'))) self._find_text_button.clicked.connect(self.findWebText) self._find_shortcut = QShortcut(QKeySequence("Ctrl+f"), self) self._find_shortcut.activated.connect(self.findTextShortcut) self._last_word = "" self._layout.addWidget(self._search_bar) self._layout.addWidget(self._find_text_label)
def __init__(self, callback): super().__init__() self.callback = callback trial_label = QLabel('Trial:') self.trial_box = QSpinBox() self.trial_box.setFixedWidth(64) self.trial_box.setValue(1) #self.trial_box.setFocusPolicy(Qt.NoFocus) trial_status_label = QLabel('Trial Status:') self.trial_status = QComboBox() self.trial_status.addItems(self.TRIAL_STATUS) self.trial_status.setFocusPolicy(Qt.NoFocus) response_label = QLabel('Response:') self.response_box = QComboBox() self.response_box.setFocusPolicy(Qt.NoFocus) self.record_button = QPushButton('Record Event') self.record_button.clicked.connect(self.record_event) self.record_button.setEnabled(False) self.record_button.setFocusPolicy(Qt.NoFocus) layout = QHBoxLayout() layout.addWidget(trial_label) layout.addWidget(self.trial_box) layout.addWidget(trial_status_label) layout.addWidget(self.trial_status) layout.addWidget(response_label) layout.addWidget(self.response_box) layout.addStretch() layout.addWidget(self.record_button) self.setLayout(layout)
def __init__(self, parent: QListWidget, id_no: int, text: str): """ A custom widget used for acting as a template in the pixel mapping list. Consists of a label and an input box. :param parent: The QListWidget that will contain this list item. :param id_no: The "temporary" ID number based on the number of faces in the mesh/number of cylinders. Used to distinguish elements in the list but doesn't define the actual IDs that are saved upon clicking Add Component. :param text: The text that appears in the list widget. Will be either "cylinder" or "face." """ super().__init__(parent) self.pixelIDLabel = QLabel() self.pixelIDLineEdit = QLineEdit() # Create the label text based on the face number self.pixelIDLabel.setText("Pixel ID for " + text + " #" + str(id_no) + ":") # Give the line edit a validator that requires values of zero or greater self.pixelIDLineEdit.setValidator(NullableIntValidator(bottom=0)) self.layout = QHBoxLayout() self.layout.addWidget(self.pixelIDLabel) self.layout.addWidget(self.pixelIDLineEdit) self.setLayout(self.layout)
def __init__(self, params): MWB.__init__(self, params) QWidget.__init__(self) self.setStyleSheet(''' background-color: #333333; ''') self.setLayout(QVBoxLayout()) # settings widget settings_widget = QWidget() settings_widget.setLayout(QHBoxLayout()) self.connect_lines_check_box = QCheckBox('connect lines linear') settings_widget.layout().addWidget(self.connect_lines_check_box) self.layout().addWidget(settings_widget) # points area self.label = QLabel() pix = QPixmap(300, 200) self.label.setPixmap(pix) self.layout().addWidget(self.label) self.resize(300, 200) self.values = []
def __init__(self, layout_generator, parent): super().__init__(parent) self.setAttribute(Qt.WA_DeleteOnClose) inner_widget = QWidget(self) layout = QHBoxLayout(self) layout.addStretch() layout.addWidget(inner_widget) layout.addStretch() inner_layout = QVBoxLayout(inner_widget) label = QLabel() label.setStyleSheet( "QLabel{color:white; font-weight: bold; font-size:18px;}") label.setAlignment(Qt.AlignHCenter) progress_bar = QProgressBar() progress_bar.setRange(0, layout_generator.iterations - 1) progress_bar.setTextVisible(False) button_box = QDialogButtonBox() button_box.setCenterButtons(True) previews_button = button_box.addButton("Show previews", QDialogButtonBox.NoRole) previews_button.setCheckable(True) previews_button.toggled.connect(layout_generator.set_show_previews) previews_button.toggled.connect( lambda checked: previews_button.setText( f"{'Hide' if checked else 'Show'} previews")) cancel_button = button_box.addButton("Cancel", QDialogButtonBox.NoRole) cancel_button.clicked.connect(layout_generator.stop) inner_layout.addStretch() inner_layout.addWidget(label) inner_layout.addWidget(progress_bar) inner_layout.addWidget(button_box) inner_layout.addStretch() self.setFixedSize(parent.size()) layout_generator.stopped.connect(self.close) layout_generator.progressed.connect(progress_bar.setValue) layout_generator.msg.connect(label.setText)
def __init__(self, parent): super().__init__() self.setWindowTitle("muSync - Sources") self.setModal(True) dialogLayout = QVBoxLayout(self) sourcesList = QListWidget() dialogLayout.addWidget(sourcesList) buttonsLayout = QHBoxLayout() okButton = QPushButton(QIcon.fromTheme("dialog-ok"), "&Ok") okButton.clicked.connect(lambda: self.__add_account(sourcesList)) okButton.setDisabled(True) buttonsLayout.addWidget(okButton) cancelButton = QPushButton(QIcon.fromTheme("dialog-cancel"), "&Cancel") cancelButton.clicked.connect(self.close) buttonsLayout.addWidget(cancelButton) dialogLayout.addLayout(buttonsLayout) for source in modules.modules.items(): sourceItem = QListWidgetItem(source[1]) sourceItem.slug = source[0] sourcesList.addItem(sourceItem) sourcesList.itemSelectionChanged.connect(lambda: okButton.setDisabled( True if sourcesList.selectedIndexes() == [] else False)) sourcesList.itemDoubleClicked.connect( lambda: self.__add_account(sourcesList))
def configureLayout(self): self.interfaceLayout = QHBoxLayout() # set amplitude layout self.aAmpWithLayout = QHBoxLayout() self.aAmpWithLayout.addWidget(self.aAmpLabel) self.aAmpWithLayout.addWidget(self.aAmplitude_spinBox) self.bAmpWithLayout = QHBoxLayout() self.bAmpWithLayout.addWidget(self.bAmpLabel) self.bAmpWithLayout.addWidget(self.bAmplitude_spinBox) self.amplitudeLayout = QVBoxLayout() self.amplitudeLayout.addLayout(self.aAmpWithLayout) self.amplitudeLayout.addLayout(self.bAmpWithLayout) # set omega layout self.aOmegaWithLayout = QHBoxLayout() self.aOmegaWithLayout.addWidget(self.aOmegaLabel) self.aOmegaWithLayout.addWidget(self.aOmega_spinBox) self.bOmegaWithLayout = QHBoxLayout() self.bOmegaWithLayout.addWidget(self.bOmegaLabel) self.bOmegaWithLayout.addWidget(self.bOmega_spinBox) self.omegaLayout = QVBoxLayout() self.omegaLayout.addLayout(self.aOmegaWithLayout) self.omegaLayout.addLayout(self.bOmegaWithLayout) # set omega layout self.phiLayout = QHBoxLayout() self.phiLayout.addWidget(self.phiLabel) self.phiLayout.addWidget(self.phi_spinBox) # set general interface layout self.interfaceLayout.addLayout(self.amplitudeLayout) self.interfaceLayout.addLayout(self.omegaLayout) self.interfaceLayout.addLayout(self.phiLayout) self.setLayout(self.interfaceLayout)
def __init__(self, subtitle_name="Test", subtitle_delay=0.0, subtitle_language=Default_Subtitle_Language, subtitle_track_name="Test", subtitle_set_default=False, subtitle_set_forced=False, subtitle_default_value_delay=0.0, subtitle_default_value_language=Default_Subtitle_Language, subtitle_default_value_track_name="Test", subtitle_default_value_set_default=False, subtitle_default_value_set_forced=False, subtitle_set_default_disabled=False, subtitle_set_forced_disabled=False, disable_edit=False, parent=None): super().__init__(parent) self.window_title = "Subtitle Info" self.state = "no" self.messageIcon = QLabel() self.disable_edit = disable_edit self.current_subtitle_language = str(subtitle_language) self.current_subtitle_delay = str(subtitle_delay) self.current_subtitle_track_name = str(subtitle_track_name) self.current_subtitle_set_default = subtitle_set_default self.current_subtitle_set_forced = subtitle_set_forced self.default_subtitle_language = str(subtitle_default_value_language) self.default_subtitle_delay = str(subtitle_default_value_delay) self.default_subtitle_track_name = str( subtitle_default_value_track_name) self.default_subtitle_set_default = subtitle_default_value_set_default self.default_subtitle_set_forced = subtitle_default_value_set_forced self.subtitle_set_default_disabled = subtitle_set_default_disabled self.subtitle_set_forced_disabled = subtitle_set_forced_disabled self.subtitle_name_label = QLabel("Subtitle Name:") self.subtitle_name_value = QLabel(str(subtitle_name)) self.subtitle_delay_label = QLabel("Subtitle Delay:") self.subtitle_delay_spin = QDoubleSpinBox() self.setup_subtitle_delay_spin() self.subtitle_language_label = QLabel("Subtitle Language:") self.subtitle_language_comboBox = QComboBox() self.setup_subtitle_language_comboBox() self.subtitle_track_name_label = QLabel("Subtitle Track Name:") self.subtitle_track_name_lineEdit = QLineEdit() self.setup_subtitle_track_name_lineEdit() self.subtitle_set_forced_label = QLabel("Subtitle Forced State:") self.subtitle_set_forced_checkBox = QCheckBox() self.setup_subtitle_set_forced_checkBox() self.subtitle_set_default_label = QLabel("Subtitle Default State:") self.subtitle_set_default_checkBox = QCheckBox() self.setup_subtitle_set_default_checkBox() self.yes_button = QPushButton("OK") self.no_button = QPushButton("Cancel") self.reset_button = QPushButton("Reset To Default") self.buttons_layout = QHBoxLayout() self.subtitle_delay_layout = QHBoxLayout() self.subtitle_language_layout = QHBoxLayout() self.subtitle_track_name_layout = QHBoxLayout() self.subtitle_set_default_layout = QHBoxLayout() self.subtitle_set_forced_layout = QHBoxLayout() self.buttons_layout.addWidget(QLabel(""), stretch=3) self.buttons_layout.addWidget(self.reset_button, stretch=2) self.buttons_layout.addWidget(self.yes_button, stretch=2) self.buttons_layout.addWidget(self.no_button, stretch=2) self.buttons_layout.addWidget(QLabel(""), stretch=3) self.subtitle_setting_layout = QGridLayout() self.subtitle_changeble_setting_layout = QFormLayout() self.subtitle_changeble_setting_layout.addRow(self.subtitle_name_label, self.subtitle_name_value) self.subtitle_changeble_setting_layout.addRow( self.subtitle_track_name_label, self.subtitle_track_name_lineEdit) self.subtitle_changeble_setting_layout.addRow( self.subtitle_language_label, self.subtitle_language_comboBox) self.subtitle_changeble_setting_layout.addRow( self.subtitle_delay_label, self.subtitle_delay_spin) self.subtitle_changeble_setting_layout.addRow( self.subtitle_set_default_label, self.subtitle_set_default_checkBox) self.subtitle_changeble_setting_layout.addRow( self.subtitle_set_forced_label, self.subtitle_set_forced_checkBox) self.subtitle_setting_layout.addLayout( self.subtitle_changeble_setting_layout, 0, 0, 5, 2) self.subtitle_setting_layout.addWidget(self.messageIcon, 0, 3, 5, -1) self.main_layout = QGridLayout() self.main_layout.addLayout(self.subtitle_setting_layout, 0, 0, 2, 3) self.main_layout.addLayout(self.buttons_layout, 2, 0, 1, -1) self.main_layout.setContentsMargins(20, 20, 20, 20) self.setLayout(self.main_layout) self.setup_ui() self.signal_connect()
def __init__(self): QWidget.__init__(self) self.items = 0 # Left of window self.table = QTableWidget() self.table.setColumnCount(3) self.table.setHorizontalHeaderLabels(["课程名", "计划学期", "学分"]) self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) self.table.setContextMenuPolicy(Qt.ActionsContextMenu) send_option1 = QAction(self.table) send_option1.setText("移动") # send_option1.triggered.connect(self.show_modify_dialog) send_option2 = QAction(self.table) send_option2.setText("删除") self.table.addAction(send_option1) self.table.addAction(send_option2) # Chart self.chart_view = QtCharts.QChartView() self.chart_view.setRenderHint(QPainter.Antialiasing) # Right self.CourseName = QLineEdit() self.Pre = QLineEdit() self.Point = QLineEdit() self.add = QPushButton("Add") self.clear = QPushButton("Clear") self.quit = QPushButton("Quit") self.plot = QPushButton("Plot") # Disabling 'Add' button self.add.setEnabled(False) self.right = QVBoxLayout() self.right.setMargin(10) self.right.addWidget(QLabel("课程名")) self.right.addWidget(self.CourseName) self.right.addWidget(QLabel("先修课程")) self.right.addWidget(self.Pre) self.right.addWidget(QLabel("学分")) self.right.addWidget(self.Point) self.right.addWidget(self.add) self.right.addWidget(self.plot) self.right.addWidget(self.chart_view) self.right.addWidget(self.clear) self.right.addWidget(self.quit) # QWidget Layout self.layout = QHBoxLayout() # self.table_view.setSizePolicy(size) self.layout.addWidget(self.table) self.layout.addLayout(self.right) # Set the layout to the QWidget self.setLayout(self.layout) # Signals and Slots self.add.clicked.connect(self.add_element) self.quit.clicked.connect(self.quit_application) self.plot.clicked.connect(self.plot_data) self.clear.clicked.connect(self.clear_table) self.CourseName.textChanged[str].connect(self.check_disable) self.Pre.textChanged[str].connect(self.check_disable) self.Point.textChanged[str].connect(self.check_disable) # Fill table self.data = file.get_course_info()[0] self.clear_table() self.fill_table()
def __init__(self, filename, image, parent=None): super(ComparisonWidget, self).__init__(parent) load_button = QPushButton(self.tr('Load reference image...')) self.comp_label = QLabel(self.tr('Comparison:')) self.normal_radio = QRadioButton(self.tr('Normal')) self.normal_radio.setToolTip(self.tr('Show reference (raw pixels)')) self.normal_radio.setChecked(True) self.difference_radio = QRadioButton(self.tr('Difference')) self.difference_radio.setToolTip( self.tr('Show evidence/reference difference')) self.ssim_radio = QRadioButton(self.tr('SSIM Map')) self.ssim_radio.setToolTip(self.tr('Structure similarity quality map')) self.butter_radio = QRadioButton(self.tr('Butteraugli')) self.butter_radio.setToolTip( self.tr('Butteraugli spatial changes heatmap')) self.gray_check = QCheckBox(self.tr('Grayscale')) self.gray_check.setToolTip(self.tr('Show desaturated output')) self.equalize_check = QCheckBox(self.tr('Equalized')) self.equalize_check.setToolTip(self.tr('Apply histogram equalization')) self.last_radio = self.normal_radio self.metric_button = QPushButton(self.tr('Compute metrics')) self.metric_button.setToolTip( self.tr('Image quality assessment metrics')) self.evidence = image self.reference = self.difference = self.ssim_map = self.butter_map = None basename = os.path.basename(filename) self.evidence_viewer = ImageViewer( self.evidence, None, self.tr('Evidence: {}'.format(basename))) self.reference_viewer = ImageViewer(np.full_like(self.evidence, 127), None, self.tr('Reference')) self.table_widget = QTableWidget(21, 3) self.table_widget.setHorizontalHeaderLabels( [self.tr('Metric'), self.tr('Value'), self.tr('Better')]) self.table_widget.setItem(0, 0, QTableWidgetItem(self.tr('RMSE'))) self.table_widget.setItem( 0, 2, QTableWidgetItem(QIcon('gui/icons/low.svg'), '(0)')) self.table_widget.item(0, 0).setToolTip( self. tr('Root Mean Square Error (RMSE) is commonly used to compare \n' 'the difference between the reference and evidence images \n' 'by directly computing the variation in pixel values. \n' 'The combined image is close to the reference image when \n' 'RMSE value is zero. RMSE is a good indicator of the spectral \n' 'quality of the reference image.')) self.table_widget.setItem(1, 0, QTableWidgetItem(self.tr('SAM'))) self.table_widget.setItem( 1, 2, QTableWidgetItem(QIcon('gui/icons/low.svg'), '(0)')) self.table_widget.item(1, 0).setToolTip( self. tr('It computes the spectral angle between the pixel, vector of the \n' 'evidence image and reference image. It is worked out in either \n' 'degrees or radians. It is performed on a pixel-by-pixel base. \n' 'A SAM equal to zero denotes the absence of spectral distortion.' )) self.table_widget.setItem(2, 0, QTableWidgetItem(self.tr('ERGAS'))) self.table_widget.setItem( 2, 2, QTableWidgetItem(QIcon('gui/icons/low.svg'), '(0)')) self.table_widget.item(2, 0).setToolTip( self. tr('It is used to compute the quality of reference image in terms \n' 'of normalized average error of each band of the reference image. \n' 'Increase in the value of ERGAS indicates distortion in the \n' 'reference image, lower value of ERGAS indicates that it is \n' 'similar to the reference image.')) self.table_widget.setItem(3, 0, QTableWidgetItem(self.tr('MB'))) self.table_widget.setItem( 3, 2, QTableWidgetItem(QIcon('gui/icons/low.svg'), '(0)')) self.table_widget.item(3, 0).setToolTip( self. tr('Mean Bias is the difference between the mean of the evidence \n' 'image and reference image. The ideal value is zero and indicates \n' 'that the evidence and reference images are similar. Mean value \n' 'refers to the grey level of pixels in an image.')) self.table_widget.setItem(4, 0, QTableWidgetItem(self.tr('PFE'))) self.table_widget.setItem( 4, 2, QTableWidgetItem(QIcon('gui/icons/low.svg'), '(0)')) self.table_widget.item(4, 0).setToolTip( self. tr('It computes the norm of the difference between the corresponding \n' 'pixels of the reference and fused image to the norm of the reference \n' 'image. When the calculated value is zero, it indicates that both the \n' 'reference and fused images are similar and value will be increased \n' 'when the merged image is not similar to the reference image.')) self.table_widget.setItem(5, 0, QTableWidgetItem(self.tr('PSNR'))) self.table_widget.setItem( 5, 2, QTableWidgetItem(QIcon('gui/icons/high.svg'), '(+' + u'\u221e' + ')')) self.table_widget.item(5, 0).setToolTip( self. tr('It is widely used metric it is computed by the number of gray levels \n' 'in the image divided by the corresponding pixels in the evidence and \n' 'the reference images. When the value is high, both images are similar.' )) self.table_widget.setItem(6, 0, QTableWidgetItem(self.tr('PSNR-B'))) self.table_widget.setItem( 6, 2, QTableWidgetItem(QIcon('gui/icons/high.svg'), '(+' + u'\u221e' + ')')) self.table_widget.item(6, 0).setToolTip( self.tr('PSNR with Blocking Effect Factor.')) self.table_widget.setItem(7, 0, QTableWidgetItem(self.tr('SSIM'))) self.table_widget.setItem( 7, 2, QTableWidgetItem(QIcon('gui/icons/high.svg'), '(1)')) self.table_widget.item(7, 0).setToolTip( self. tr('SSIM is used to compare the local patterns of pixel intensities between \n' ' the reference and fused images. The range varies between -1 to 1. \n' 'The value 1 indicates the reference and fused images are similar.' )) self.table_widget.setItem(8, 0, QTableWidgetItem(self.tr('MS-SSIM'))) self.table_widget.setItem( 8, 2, QTableWidgetItem(QIcon('gui/icons/high.svg'), '(1)')) self.table_widget.item(8, 0).setToolTip( self.tr('Multiscale version of SSIM.')) self.table_widget.setItem(9, 0, QTableWidgetItem(self.tr('RASE'))) self.table_widget.setItem( 9, 2, QTableWidgetItem(QIcon('gui/icons/low.svg'), '(0)')) self.table_widget.item(9, 0).setToolTip( self.tr('Relative average spectral error')) self.table_widget.setItem(10, 0, QTableWidgetItem(self.tr('SCC'))) self.table_widget.setItem( 10, 2, QTableWidgetItem(QIcon('gui/icons/high.svg'), '(1)')) self.table_widget.item(10, 0).setToolTip( self.tr('Spatial Correlation Coefficient')) self.table_widget.setItem(11, 0, QTableWidgetItem(self.tr('UQI'))) self.table_widget.setItem( 11, 2, QTableWidgetItem(QIcon('gui/icons/high.svg'), '(1)')) self.table_widget.item(11, 0).setToolTip( self.tr('Universal Image Quality Index')) self.table_widget.setItem(12, 0, QTableWidgetItem(self.tr('VIF-P'))) self.table_widget.setItem( 12, 2, QTableWidgetItem(QIcon('gui/icons/high.svg'), '(1)')) self.table_widget.item(12, 0).setToolTip( self.tr('Pixel-based Visual Information Fidelity')) self.table_widget.setItem(13, 0, QTableWidgetItem(self.tr('SSIMulacra'))) self.table_widget.setItem( 13, 2, QTableWidgetItem(QIcon('gui/icons/low.svg'), '(0)')) self.table_widget.item(13, 0).setToolTip( self.tr('Structural SIMilarity Unveiling Local ' 'And Compression Related Artifacts')) self.table_widget.setItem(14, 0, QTableWidgetItem(self.tr('Butteraugli'))) self.table_widget.setItem( 14, 2, QTableWidgetItem(QIcon('gui/icons/low.svg'), '(0)')) self.table_widget.item(14, 0).setToolTip( self.tr('Estimate psychovisual error')) self.table_widget.setItem(15, 0, QTableWidgetItem(self.tr('Correlation'))) self.table_widget.setItem( 15, 2, QTableWidgetItem(QIcon('gui/icons/high.svg'), '(1)')) self.table_widget.item(15, 0).setToolTip(self.tr('Histogram correlation')) self.table_widget.setItem(16, 0, QTableWidgetItem(self.tr('Chi-Square'))) self.table_widget.setItem( 16, 2, QTableWidgetItem(QIcon('gui/icons/low.svg'), '(0)')) self.table_widget.item(16, 0).setToolTip(self.tr('Histogram Chi-Square')) self.table_widget.setItem(17, 0, QTableWidgetItem(self.tr('Chi-Square 2'))) self.table_widget.setItem( 17, 2, QTableWidgetItem(QIcon('gui/icons/low.svg'), '(0)')) self.table_widget.item(17, 0).setToolTip(self.tr('Alternative Chi-Square')) self.table_widget.setItem(18, 0, QTableWidgetItem(self.tr('Intersection'))) self.table_widget.setItem( 18, 2, QTableWidgetItem(QIcon('gui/icons/high.svg'), '(+' + u'\u221e' + ')')) self.table_widget.item(18, 0).setToolTip(self.tr('Histogram intersection')) self.table_widget.setItem(19, 0, QTableWidgetItem(self.tr('Hellinger'))) self.table_widget.setItem( 19, 2, QTableWidgetItem(QIcon('gui/icons/low.svg'), '(0)')) self.table_widget.item(19, 0).setToolTip( self.tr('Histogram Hellinger distance')) self.table_widget.setItem(20, 0, QTableWidgetItem(self.tr('Divergence'))) self.table_widget.setItem( 20, 2, QTableWidgetItem(QIcon('gui/icons/low.svg'), '(0)')) self.table_widget.item(20, 0).setToolTip( self.tr('Kullback-Leibler divergence')) for i in range(self.table_widget.rowCount()): modify_font(self.table_widget.item(i, 0), bold=True) self.table_widget.setSelectionMode(QAbstractItemView.SingleSelection) self.table_widget.setEditTriggers(QAbstractItemView.NoEditTriggers) self.table_widget.resizeColumnsToContents() self.table_widget.setMaximumWidth(250) self.table_widget.setAlternatingRowColors(True) self.stopped = False self.comp_label.setEnabled(False) self.normal_radio.setEnabled(False) self.difference_radio.setEnabled(False) self.ssim_radio.setEnabled(False) self.butter_radio.setEnabled(False) self.gray_check.setEnabled(False) self.equalize_check.setEnabled(False) self.metric_button.setEnabled(False) self.table_widget.setEnabled(False) load_button.clicked.connect(self.load) self.normal_radio.clicked.connect(self.change) self.difference_radio.clicked.connect(self.change) self.butter_radio.clicked.connect(self.change) self.gray_check.stateChanged.connect(self.change) self.equalize_check.stateChanged.connect(self.change) self.ssim_radio.clicked.connect(self.change) self.evidence_viewer.viewChanged.connect( self.reference_viewer.changeView) self.reference_viewer.viewChanged.connect( self.evidence_viewer.changeView) self.metric_button.clicked.connect(self.metrics) top_layout = QHBoxLayout() top_layout.addWidget(load_button) top_layout.addStretch() top_layout.addWidget(self.comp_label) top_layout.addWidget(self.normal_radio) top_layout.addWidget(self.difference_radio) top_layout.addWidget(self.ssim_radio) top_layout.addWidget(self.butter_radio) top_layout.addWidget(self.gray_check) top_layout.addWidget(self.equalize_check) metric_layout = QVBoxLayout() index_label = QLabel(self.tr('Image Quality Assessment')) index_label.setAlignment(Qt.AlignCenter) modify_font(index_label, bold=True) metric_layout.addWidget(index_label) metric_layout.addWidget(self.table_widget) metric_layout.addWidget(self.metric_button) center_layout = QHBoxLayout() center_layout.addWidget(self.evidence_viewer) center_layout.addWidget(self.reference_viewer) center_layout.addLayout(metric_layout) main_layout = QVBoxLayout() main_layout.addLayout(top_layout) main_layout.addLayout(center_layout) self.setLayout(main_layout)
def __init__(self, parent=None): super(Snippets, self).__init__(parent) # Create widgets self.setWindowModality(Qt.NonModal) self.title = QLabel(self.tr("Snippet Editor")) self.saveButton = QPushButton(self.tr("Save")) self.revertButton = QPushButton(self.tr("Revert")) self.clearHotkeyButton = QPushButton(self.tr("Clear Hotkey")) self.setWindowTitle(self.title.text()) self.newFolderButton = QPushButton("New Folder") self.deleteSnippetButton = QPushButton("Delete") self.newSnippetButton = QPushButton("New Snippet") self.edit = QPlainTextEdit() self.resetting = False self.columns = 3 self.keySequenceEdit = QKeySequenceEdit(self) self.currentHotkey = QKeySequence() self.currentHotkeyLabel = QLabel("") self.currentFileLabel = QLabel() self.currentFile = "" self.snippetDescription = QLineEdit() self.snippetEditsPending = False self.clearSelection() #Set Editbox Size font = getMonospaceFont(self) self.edit.setFont(font) font = QFontMetrics(font) self.edit.setTabStopWidth(4 * font.width(' ')); #TODO, replace with settings API #Files self.files = QFileSystemModel() self.files.setRootPath(snippetPath) self.files.setNameFilters(["*.py"]) #Tree self.tree = QTreeView() self.tree.setModel(self.files) self.tree.setSortingEnabled(True) self.tree.hideColumn(2) self.tree.sortByColumn(0, Qt.AscendingOrder) self.tree.setRootIndex(self.files.index(snippetPath)) for x in range(self.columns): #self.tree.resizeColumnToContents(x) self.tree.header().setSectionResizeMode(x, QHeaderView.ResizeToContents) treeLayout = QVBoxLayout() treeLayout.addWidget(self.tree) treeButtons = QHBoxLayout() treeButtons.addWidget(self.newFolderButton) treeButtons.addWidget(self.newSnippetButton) treeButtons.addWidget(self.deleteSnippetButton) treeLayout.addLayout(treeButtons) treeWidget = QWidget() treeWidget.setLayout(treeLayout) # Create layout and add widgets buttons = QHBoxLayout() buttons.addWidget(self.clearHotkeyButton) buttons.addWidget(self.keySequenceEdit) buttons.addWidget(self.currentHotkeyLabel) buttons.addWidget(self.revertButton) buttons.addWidget(self.saveButton) description = QHBoxLayout() description.addWidget(QLabel(self.tr("Description: "))) description.addWidget(self.snippetDescription) vlayoutWidget = QWidget() vlayout = QVBoxLayout() vlayout.addWidget(self.currentFileLabel) vlayout.addWidget(self.edit) vlayout.addLayout(description) vlayout.addLayout(buttons) vlayoutWidget.setLayout(vlayout) hsplitter = QSplitter() hsplitter.addWidget(treeWidget) hsplitter.addWidget(vlayoutWidget) hlayout = QHBoxLayout() hlayout.addWidget(hsplitter) self.showNormal() #Fixes bug that maximized windows are "stuck" self.settings = QSettings("Vector 35", "Snippet Editor") if self.settings.contains("ui/snippeteditor/geometry"): self.restoreGeometry(self.settings.value("ui/snippeteditor/geometry")) else: self.edit.setMinimumWidth(80 * font.averageCharWidth()) self.edit.setMinimumHeight(30 * font.lineSpacing()) # Set dialog layout self.setLayout(hlayout) # Add signals self.saveButton.clicked.connect(self.save) self.revertButton.clicked.connect(self.loadSnippet) self.clearHotkeyButton.clicked.connect(self.clearHotkey) self.tree.selectionModel().selectionChanged.connect(self.selectFile) self.newSnippetButton.clicked.connect(self.newFileDialog) self.deleteSnippetButton.clicked.connect(self.deleteSnippet) self.newFolderButton.clicked.connect(self.newFolder)
def __init__(self): super().__init__() self.position = [0.0] * 6 def _positionChanged(index, change): self.position[index] += change self.positionChanged.emit(self.position) def positionButton(icon, text, index, delta, deltaScale): but = QPushButton(icon, text) but.clicked.connect( lambda: _positionChanged(index, delta.value() * deltaScale)) return but style = QApplication.instance().style() def addArrowsBox(title, indexOffset, scale): layout = QGridLayout() deltaSB = QDoubleSpinBox() deltaSB.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.MinimumExpanding) if title == "Translation": deltaSB.setRange(-7, 7) deltaSB.setDecimals(3) deltaSB.setValue(1.0) else: deltaSB.setRange(-60, 60) deltaSB.setDecimals(2) deltaSB.setValue(10.0) setattr(self, "delta_" + title, deltaSB) deltaF = QFormLayout() deltaF.addRow("Delta", deltaSB) layout.addLayout(deltaF, 0, 0, 1, 3) layout.addWidget( positionButton( style.standardIcon(QStyle.SP_ArrowUp), "X+", 0 + indexOffset, deltaSB, scale, ), 1, 1, ) layout.addWidget( positionButton( style.standardIcon(QStyle.SP_ArrowDown), "X-", 0 + indexOffset, deltaSB, -scale, ), 3, 1, ) layout.addWidget( positionButton( style.standardIcon(QStyle.SP_ArrowLeft), "Y-", 1 + indexOffset, deltaSB, -scale, ), 2, 0, ) layout.addWidget( positionButton( style.standardIcon(QStyle.SP_ArrowRight), "Y+", 1 + indexOffset, deltaSB, scale, ), 2, 2, ) layout.addWidget( positionButton( style.standardIcon(QStyle.SP_ArrowUp), "Z+", 2 + indexOffset, deltaSB, scale, ), 1, 4, ) layout.addWidget( positionButton( style.standardIcon(QStyle.SP_ArrowDown), "Z-", 2 + indexOffset, deltaSB, -scale, ), 3, 4, ) ret = QGroupBox(title) ret.setLayout(layout) return ret layout = QHBoxLayout() layout.addWidget(addArrowsBox("Translation", 0, u.mm.to(u.meter))) layout.addWidget(addArrowsBox("Rotation", 3, u.arcsec.to(u.deg))) self.setLayout(layout)
def __init__(self): QWidget.__init__(self) self.q = None self.pool = None self.top = QHBoxLayout() self.top.setMargin(10) self.middle = QVBoxLayout() self.middle.setMargin(10) self.radioButtonDailyMotionDrama = QRadioButton( "有 Dailymotion Drama 的網站") self.radioButtonAny = QRadioButton("其它類型網站 (例如 YouTube)") self.top.addWidget(self.radioButtonDailyMotionDrama) self.top.addWidget(self.radioButtonAny) self.url_label = QLabel() self.url = QLineEdit() self.url_label.setBuddy(self.url) self.middle.addWidget(self.url_label) self.middle.addWidget(self.url) self.browse_folder_label = QLabel("下載到:") self.browseFolder = QPushButton("選擇目錄") self.browse_folder_label.setBuddy(self.browseFolder) self.middle.addWidget(self.browse_folder_label) self.middle.addWidget(self.browseFolder) self.browse_folder_value = "" self.bk_cinemae_spin_from = 1 self.bk_cinemae_spin_to = 1 self.fromEpSpinBox = QSpinBox() self.fromEpSpinBox.setMinimum(1) self.fromEpSpinBox.setMaximum(2147483647) self.fromEpLabel = QLabel("&從第幾集開始下載:") self.fromEpLabel.setBuddy(self.fromEpSpinBox) self.toEpSpinBox = QSpinBox() self.toEpSpinBox.setMinimum(1) self.toEpSpinBox.setMaximum(2147483647) self.toEpLabel = QLabel("&到第幾集停止下載:") self.toEpLabel.setBuddy(self.toEpSpinBox) self.cinema_ly = QHBoxLayout() #self.cinema_ly.setMargin(10) self.cinema_ly.addWidget(self.fromEpLabel) self.cinema_ly.addWidget(self.fromEpSpinBox) self.cinema_ly.addWidget(self.toEpLabel) self.cinema_ly.addWidget(self.toEpSpinBox) self.middle.addLayout(self.cinema_ly) self.add = QPushButton("開始下載") self.add.setEnabled(False) self.middle.addWidget(self.add) self.stop_me = QPushButton("停止下載") self.stop_me.setEnabled(False) self.middle.addWidget(self.stop_me) self.log_area = QPlainTextEdit() self.log_area.setReadOnly(True) self.log_area.setMaximumBlockCount(1000) self.middle.addWidget(self.log_area) #self.table_view.setSizePolicy(size) #self.layout.addWidget(self.table) self.layout = QVBoxLayout() self.layout.addLayout(self.top) self.layout.addLayout(self.middle) self.setLayout(self.layout) self.radioButtonDailyMotionDrama.toggled.connect( self.choose_DailyMotionDrama_widgets) self.radioButtonAny.toggled.connect(self.choose_Any_widgets) self.url.textChanged[str].connect(self.check_disable_download) self.browseFolder.clicked.connect(self.add_folder) self.add.clicked.connect(self.start_download) self.stop_me.clicked.connect(self.stop_download) self.radioButtonDailyMotionDrama.setChecked( True) #set default only after .connect above # TESTING PURPOSE ''' self.url.setText('https://journalflash.com/cn191023b/') self.browse_folder_value = 'C:/Users/Administrator/Documents/duboku' ''' #set current process (not queue that one) log handler: logger = logging.getLogger(__name__) handler2 = LoggerWriter() logger.addHandler(handler2) logger.setLevel(logging.INFO) #DEBUG handler2.emitter.sigLog.connect(self.log_area.appendPlainText) sys.stdout = handler2 #LoggerWriter()
def layouts(self): # People layouts ########################################################### self.peopleMainLayout = QVBoxLayout() self.peopleMainTopLayout = QHBoxLayout() self.peopleTopLeftLayout = QHBoxLayout() self.peopleTopRightLayout = QHBoxLayout() # self.peopleMainMiddleLayout = QHBoxLayout() self.peopleMainBottomLayout = QHBoxLayout() self.peopleBottomRightLayout = QVBoxLayout() self.peopleBottomLeftLayout = QHBoxLayout() # Groupboxes allows customization using CSS-like syntax # self.peopleTopGroupBox = QGroupBox() # self.peopleTopGroupBoxRightFiller = QGroupBox() # self.peopleMiddleGroupBox = QGroupBox() # self.peopleMiddleGroupBoxRightFiller = QGroupBox() self.peopleTopLeftGroupBox = QGroupBox() self.peopleTopRightGroupBox = QGroupBox() self.peopleTopGroupBox = QGroupBox() self.peopleBottomGroupBox = QGroupBox() self.peopleBottomLeftGroupBox = QGroupBox() self.peopleBottomRightGroupBox = QGroupBox() self.peopleBottomRightGroupBox.setStyleSheet( 'QGroupBox {margin-top: 0px;}') self.peopleBottomRightGroupBoxFiller = QGroupBox() self.peopleBottomRightGroupBoxFiller.setStyleSheet( styles.groupBoxFillerStyle()) # Top layout (search box) widgets self.peopleTopLeftLayout.addWidget(self.searchPeopleText, 10) self.peopleTopLeftLayout.addWidget(self.searchPeopleEntry, 30) self.peopleTopLeftLayout.addWidget(self.searchPeopleBtn, 10) self.peopleTopLeftLayout.addItem( QSpacerItem(70, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)) self.peopleTopLeftLayout.addWidget(self.refreshPeopleBtn, 10) self.peopleTopLeftGroupBox.setLayout(self.peopleTopLeftLayout) # Middle layout (list box) widgets self.peopleTopRightLayout.addWidget(self.allPeopleRadioBtn) self.peopleTopRightLayout.addWidget(self.employeesPeopleRadioBtn) self.peopleTopRightLayout.addWidget(self.contractorsPeopleRadioBtn) self.peopleTopRightLayout.addWidget(self.subcontractorsPeopleRadioBtn) self.peopleTopRightLayout.addWidget(self.listPeopleBtn) self.peopleTopRightGroupBox.setLayout(self.peopleTopRightLayout) self.peopleMainTopLayout.addWidget(self.peopleTopLeftGroupBox, 60) self.peopleMainTopLayout.addWidget(self.peopleTopRightGroupBox, 40) # Bottom layout (table with issues) widgets # Bottom left layout with table self.peopleBottomLeftLayout.addWidget(self.peopleTable) self.peopleBottomLeftGroupBox.setLayout(self.peopleBottomLeftLayout) # Bottom right layout with buttons self.peopleBottomRightLayout.addWidget(self.addPerson, 5) self.peopleBottomRightLayout.addWidget(self.viewPerson, 5) self.peopleBottomRightLayout.addWidget(self.deletePerson, 5) self.peopleBottomRightLayout.addWidget( self.peopleBottomRightGroupBoxFiller, 70) self.peopleBottomRightLayout.addWidget(self.exportPeopleCSVBtn, 5) self.peopleBottomRightLayout.addWidget(self.exportPeopleXLSXBtn, 5) self.peopleBottomRightLayout.addWidget(self.exportPeoplePDFBtn, 5) self.peopleBottomRightGroupBox.setLayout(self.peopleBottomRightLayout) self.peopleMainBottomLayout.addWidget(self.peopleTable, 90) self.peopleMainBottomLayout.addWidget(self.peopleBottomRightGroupBox, 10) # self.peopleMainLayout.addWidget(self.peopleTopGroupBox, 10) # self.peopleMainLayout.addWidget(self.peopleMiddleGroupBox, 10) # self.peopleMainLayout.addLayout(self.peopleMainBottomLayout, 80) self.peopleMainLayout.addLayout(self.peopleMainTopLayout, 10) self.peopleMainLayout.addLayout(self.peopleMainBottomLayout, 90) self.setLayout(self.peopleMainLayout)
def add_MC_ui_elements(self): layout_mc = QVBoxLayout() # H-LAYOUT start simulation self.button_run = QPushButton('Run Simulation') self.label_iterations = QLabel('Iterations:') self.iterations = QLineEdit('10') self.iterations.setFixedWidth(40) self.iterations.setValidator(QtGui.QIntValidator(1, 1000)) self.label_seed = QLabel('Random seed:') self.label_seed.setToolTip( 'Seed value (integer) for the random number generator. ' 'Use this for reproducible samples.') self.seed = QLineEdit('') self.seed.setFixedWidth(30) self.hlayout_run = QHBoxLayout() self.hlayout_run.addWidget(self.scenario_label) self.hlayout_run.addWidget(self.scenario_box) self.hlayout_run.addWidget(self.button_run) self.hlayout_run.addWidget(self.label_iterations) self.hlayout_run.addWidget(self.iterations) self.hlayout_run.addWidget(self.label_seed) self.hlayout_run.addWidget(self.seed) self.hlayout_run.addWidget(self.include_box) self.hlayout_run.addStretch(1) layout_mc.addLayout(self.hlayout_run) # self.label_running = QLabel('Running a Monte Carlo simulation. Please allow some time for this. ' # 'Please do not run another simulation at the same time.') # self.layout_mc.addWidget(self.label_running) # self.label_running.hide() # # buttons for all FUs or for all methods # self.radio_button_all_fu = QRadioButton("For all functional units") # self.radio_button_all_methods = QRadioButton("Technosphere flows") # # self.radio_button_biosphere.setChecked(True) # self.radio_button_technosphere.setChecked(False) # # self.label_for_all_fu = QLabel('For all functional units') # self.combobox_fu = QRadioButton() # self.hlayout_fu = QHBoxLayout() # FU selection # self.label_fu = QLabel('Choose functional unit') # self.combobox_fu = QComboBox() # self.hlayout_fu = QHBoxLayout() # # self.hlayout_fu.addWidget(self.label_fu) # self.hlayout_fu.addWidget(self.combobox_fu) # self.hlayout_fu.addStretch() # self.layout_mc.addLayout(self.hlayout_fu) # method selection self.method_selection_widget = QWidget() self.label_methods = QLabel('Choose LCIA method') self.combobox_methods = QComboBox() self.hlayout_methods = QHBoxLayout() self.hlayout_methods.addWidget(self.label_methods) self.hlayout_methods.addWidget(self.combobox_methods) self.hlayout_methods.addStretch() self.method_selection_widget.setLayout(self.hlayout_methods) layout_mc.addWidget(self.method_selection_widget) self.method_selection_widget.hide() self.layout.addLayout(layout_mc)
def __init__(self, image, parent=None): super(FrequencyWidget, self).__init__(parent) self.split_spin = QSpinBox() self.split_spin.setRange(0, 100) self.split_spin.setValue(15) self.split_spin.setSuffix(self.tr(" %")) self.smooth_spin = QSpinBox() self.smooth_spin.setRange(0, 100) self.smooth_spin.setValue(25) self.smooth_spin.setSuffix(self.tr(" %")) self.smooth_spin.setSpecialValueText(self.tr("Off")) self.thr_spin = QSpinBox() self.thr_spin.setRange(0, 100) self.thr_spin.setValue(0) self.thr_spin.setSuffix(self.tr(" %")) self.thr_spin.setSpecialValueText(self.tr("Off")) self.zero_label = QLabel() modify_font(self.zero_label, italic=True) self.filter_spin = QSpinBox() self.filter_spin.setRange(0, 15) self.filter_spin.setValue(0) self.filter_spin.setSuffix(self.tr(" px")) self.filter_spin.setSpecialValueText(self.tr("Off")) self.split_spin.valueChanged.connect(self.process) self.smooth_spin.valueChanged.connect(self.process) self.thr_spin.valueChanged.connect(self.process) self.filter_spin.valueChanged.connect(self.postprocess) self.image = image gray = cv.cvtColor(self.image, cv.COLOR_BGR2GRAY) rows, cols = gray.shape height = cv.getOptimalDFTSize(rows) width = cv.getOptimalDFTSize(cols) padded = cv.copyMakeBorder(gray, 0, height - rows, 0, width - cols, cv.BORDER_CONSTANT) self.dft = np.fft.fftshift(cv.dft(padded.astype(np.float32), flags=cv.DFT_COMPLEX_OUTPUT)) self.magnitude0, self.phase0 = cv.cartToPolar(self.dft[:, :, 0], self.dft[:, :, 1]) self.magnitude0 = cv.normalize(cv.log(self.magnitude0), None, 0, 255, cv.NORM_MINMAX) self.phase0 = cv.normalize(self.phase0, None, 0, 255, cv.NORM_MINMAX) self.magnitude = self.phase = None self.low_viewer = ImageViewer(self.image, self.image, self.tr("Low frequency"), export=True) self.high_viewer = ImageViewer(self.image, self.image, self.tr("High frequency"), export=True) self.mag_viewer = ImageViewer(self.image, None, self.tr("DFT Magnitude"), export=True) self.phase_viewer = ImageViewer(self.image, None, self.tr("DFT Phase"), export=True) self.process() self.low_viewer.viewChanged.connect(self.high_viewer.changeView) self.high_viewer.viewChanged.connect(self.low_viewer.changeView) self.mag_viewer.viewChanged.connect(self.phase_viewer.changeView) self.phase_viewer.viewChanged.connect(self.mag_viewer.changeView) top_layout = QHBoxLayout() top_layout.addWidget(QLabel(self.tr("Separation:"))) top_layout.addWidget(self.split_spin) top_layout.addWidget(QLabel(self.tr("Smooth:"))) top_layout.addWidget(self.smooth_spin) top_layout.addWidget(QLabel(self.tr("Threshold:"))) top_layout.addWidget(self.thr_spin) top_layout.addWidget(QLabel(self.tr("Filter:"))) top_layout.addWidget(self.filter_spin) top_layout.addWidget(self.zero_label) top_layout.addStretch() center_layout = QGridLayout() center_layout.addWidget(self.low_viewer, 0, 0) center_layout.addWidget(self.high_viewer, 0, 1) center_layout.addWidget(self.mag_viewer, 1, 0) center_layout.addWidget(self.phase_viewer, 1, 1) main_layout = QVBoxLayout() main_layout.addLayout(top_layout) main_layout.addLayout(center_layout) self.setLayout(main_layout)
def searchPeople(self): value = self.searchPeopleEntry.text() if value == "": QMessageBox.information(self, "Warning", "Search string cannot be empty") self.funcDisplayPeople() else: # Erase search entry self.searchPeopleEntry.setText("") try: query = "SELECT * FROM people WHERE " \ "person_id LIKE ? " \ "OR person_first_name LIKE ?" \ "OR person_last_name LIKE ?" \ "OR person_title LIKE ?" \ "OR person_phone LIKE ?" \ "OR person_email LIKE ?" \ "OR person_location LIKE ?" \ "OR person_empl_type LIKE ?" results = db.cur.execute(query, ( '%' + value + '%', '%' + value + '%', '%' + value + '%', '%' + value + '%', '%' + value + '%', '%' + value + '%', '%' + value + '%', '%' + value + '%', )).fetchall() if results == []: QMessageBox.information(self, "Info", "Nothing was found") self.displayPeople() else: for i in reversed(range(self.peopleTable.rowCount())): self.peopleTable.removeRow(i) for row_data in results: row_number = self.peopleTable.rowCount() self.peopleTable.insertRow(row_number) # Add checkboxes to the table qwidget = QWidget() checkbox = QCheckBox() checkbox.setCheckState(Qt.Unchecked) qhboxlayout = QHBoxLayout(qwidget) qhboxlayout.addWidget(checkbox) qhboxlayout.setAlignment(Qt.AlignCenter) self.peopleTable.setCellWidget(row_number, 0, qwidget) self.peopleTable.setItem(row_number, 0, QTableWidgetItem(row_number)) # Add photo photos_thumbnails to the table thumbWidget = QWidget() pic = QPixmap( "assets/media/people-media/photos_thumbnails/01Aug2020_18h01mtrtgzteuzuspxrp_thumbnail.png" ) thumbLabel = QLabel() thumbLabel.setPixmap(pic) thumbLayout = QHBoxLayout(thumbWidget) thumbLayout.addWidget(thumbLabel) self.peopleTable.setCellWidget(row_number, 1, thumbWidget) self.peopleTable.setItem(row_number, 0, QTableWidgetItem(row_number)) for column_number, data in enumerate(row_data, start=2): if column_number == 2: self.peopleTable.setItem( row_number, column_number, QTableWidgetItem("PRN#" + str(data))) else: self.peopleTable.setItem( row_number, column_number, QTableWidgetItem(str(data))) except: QMessageBox.information(self, "Info", "Cannot access database")
def funcListPeople(self): if self.allPeopleRadioBtn.isChecked(): self.funcDisplayPeople() elif self.employeesPeopleRadioBtn.isChecked(): try: query = "SELECT * FROM people WHERE person_empl_type = 'Employee'" people = db.cur.execute(query).fetchall() for i in reversed(range(self.peopleTable.rowCount())): self.peopleTable.removeRow(i) for row_data in people: row_number = self.peopleTable.rowCount() self.peopleTable.insertRow(row_number) # Add checkboxes to the table widget = QWidget() checkBox = QCheckBox() checkBox.setCheckState(Qt.Unchecked) hBoxLayout = QHBoxLayout(widget) hBoxLayout.addWidget(checkBox) hBoxLayout.setAlignment(Qt.AlignCenter) self.peopleTable.setCellWidget(row_number, 0, widget) self.peopleTable.setItem(row_number, 0, QTableWidgetItem(row_number)) # Add photo photos_thumbnails to the table thumbWidget = QWidget() pic = QPixmap( "assets/media/people-media/photos_thumbnails/01Aug2020_18h01mtrtgzteuzuspxrp_thumbnail.png" ) thumbLabel = QLabel() thumbLabel.setPixmap(pic) thumbLayout = QHBoxLayout(thumbWidget) thumbLayout.addWidget(thumbLabel) self.peopleTable.setCellWidget(row_number, 1, thumbWidget) self.peopleTable.setItem(row_number, 0, QTableWidgetItem(row_number)) # Fill the rest of the data for column_number, data in enumerate(row_data, start=2): if column_number == 2: self.peopleTable.setItem( row_number, column_number, QTableWidgetItem("PRN#" + str(data))) else: self.peopleTable.setItem( row_number, column_number, QTableWidgetItem(str(data))) except: QMessageBox.information(self, "Info", "Cannot access database") elif self.contractorsPeopleRadioBtn.isChecked(): try: query = "SELECT * FROM people WHERE person_empl_type = 'Contractor'" people = db.cur.execute(query).fetchall() for i in reversed(range(self.peopleTable.rowCount())): self.peopleTable.removeRow(i) for row_data in people: row_number = self.peopleTable.rowCount() self.peopleTable.insertRow(row_number) # Add checkboxes to the table widget = QWidget() checkBox = QCheckBox() checkBox.setCheckState(Qt.Unchecked) hBoxLayout = QHBoxLayout(widget) hBoxLayout.addWidget(checkBox) hBoxLayout.setAlignment(Qt.AlignCenter) self.peopleTable.setCellWidget(row_number, 0, widget) self.peopleTable.setItem(row_number, 0, QTableWidgetItem(row_number)) # Add photo photos_thumbnails to the table thumbWidget = QWidget() pic = QPixmap( "assets/media/people-media/photos_thumbnails/01Aug2020_18h01mtrtgzteuzuspxrp_thumbnail.png" ) thumbLabel = QLabel() thumbLabel.setPixmap(pic) thumbLayout = QHBoxLayout(thumbWidget) thumbLayout.addWidget(thumbLabel) self.peopleTable.setCellWidget(row_number, 1, thumbWidget) self.peopleTable.setItem(row_number, 0, QTableWidgetItem(row_number)) # Fill the rest of the data for column_number, data in enumerate(row_data, start=2): if column_number == 2: self.peopleTable.setItem( row_number, column_number, QTableWidgetItem("PRN#" + str(data))) else: self.peopleTable.setItem( row_number, column_number, QTableWidgetItem(str(data))) except: QMessageBox.information(self, "Info", "Cannot access database") elif self.subcontractorsPeopleRadioBtn.isChecked(): try: query = "SELECT * FROM people WHERE person_empl_type = 'Subcontractor'" people = db.cur.execute(query).fetchall() for i in reversed(range(self.peopleTable.rowCount())): self.peopleTable.removeRow(i) for row_data in people: row_number = self.peopleTable.rowCount() self.peopleTable.insertRow(row_number) # Add checkboxes to the table widget = QWidget() checkBox = QCheckBox() checkBox.setCheckState(Qt.Unchecked) hBoxLayout = QHBoxLayout(widget) hBoxLayout.addWidget(checkBox) hBoxLayout.setAlignment(Qt.AlignCenter) self.peopleTable.setCellWidget(row_number, 0, widget) self.peopleTable.setItem(row_number, 0, QTableWidgetItem(row_number)) # Add photo photos_thumbnails to the table thumbWidget = QWidget() pic = QPixmap( "assets/media/people-media/photos_thumbnails/01Aug2020_18h01mtrtgzteuzuspxrp_thumbnail.png" ) thumbLabel = QLabel() thumbLabel.setPixmap(pic) thumbLayout = QHBoxLayout(thumbWidget) thumbLayout.addWidget(thumbLabel) self.peopleTable.setCellWidget(row_number, 1, thumbWidget) self.peopleTable.setItem(row_number, 0, QTableWidgetItem(row_number)) # Fill the rest of the data for column_number, data in enumerate(row_data, start=2): if column_number == 2: self.peopleTable.setItem( row_number, column_number, QTableWidgetItem("PRN#" + str(data))) else: self.peopleTable.setItem( row_number, column_number, QTableWidgetItem(str(data))) except: QMessageBox.information(self, "Info", "Cannot access database")
def initUI(self): self.setWindowTitle("Controle Remoto do Reator PWR") self.setGeometry(200, 300, 500, 500) vBox = QVBoxLayout(self) hBox1 = QHBoxLayout() self.hostTxt = QLineEdit(host) self.portTxt = QLineEdit(str(port)) self.btnConnect = QPushButton("Conectar") self.btnConnect.clicked.connect(self.on_btnConnect_clicked) hBox1.addWidget(QLabel("host:")) hBox1.addWidget(self.hostTxt) hBox1.addWidget(QLabel("Porta:")) hBox1.addWidget(self.portTxt) hBox1.addWidget(QLabel("Status:")) self.lbConnected = QLabel("Desconectado") hBox1.addWidget(self.lbConnected) hBox1.addWidget(self.btnConnect) #hBox1.setAlignment(Qt.AlignTop) vBox.addLayout(hBox1) hBox2 = QHBoxLayout() vBox.addLayout(hBox2) #hBox2.setAlignment(Qt.AlignTop) #Núcleo do Reator grpCore = QGroupBox("Núcleo (R)") #grpCore.setSizePolicy(QSizePolicy.Ignored,QSizePolicy.Preferred) grpCoreLayout = QVBoxLayout() grpCore.setLayout(grpCoreLayout) inBarras = InputWidget("Barras (v_R)", "[cm]", 0.0) inBarras.c.inputValueChanged.connect(self.setRods) grpCoreLayout.addWidget(inBarras) self.outPotNucleo = OutputWidget("Pot Núcleo (W_R)", "[MW]", 1365.5) grpCoreLayout.addWidget(self.outPotNucleo) hBox2.addWidget(grpCore) grpPressurizer = QGroupBox("Pressurizador(PR)") grpPressurizerLayout = QVBoxLayout() grpPressurizer.setLayout(grpPressurizerLayout) inAquecPR = InputWidget("Pot Ent PR ", "(W_heat_PR)[kW]", 168.0) inAquecPR.c.inputValueChanged.connect(self.setHeater) grpPressurizerLayout.addWidget(inAquecPR) self.outPresPR = OutputWidget("Pres (p_PR)", "[bar]", 118.145) grpPressurizerLayout.addWidget(self.outPresPR) hBox2.addWidget(grpPressurizer) grpSteam = QGroupBox("Gerador de Vapor (SG)") grpSteamLayout = QVBoxLayout() grpSteam.setLayout(grpSteamLayout) inVazSG = InputWidget("Vaz Liq SG (m_SG)", "[kg/s]", 119.3) inVazSG.c.inputValueChanged.connect(self.setSGFlow) grpSteamLayout.addWidget(inVazSG) self.outPotSG = OutputWidget("Pot Req (W_SG)", "[MW]", 1349) grpSteamLayout.addWidget(self.outPotSG) hBox2.addWidget(grpSteam) lbGraf = QLabel("Gráficos") lbGraf.setAlignment(Qt.AlignHCenter) vBox.addWidget(lbGraf) vBox.addStretch(1) self.cbW_SG = QCheckBox("Potência no Gerador de Vapor (W_SG)") self.cbW_SG.setChecked(False) self.cbW_SG.stateChanged.connect(self.chart_W_SG) self.cbp_PR = QCheckBox("Pressão no Pressurizador(p_PR)") self.cbp_PR.stateChanged.connect(self.chart_p_PR) self.cbp_PR.setChecked(False) self.cbm_SG = QCheckBox("Vazão Líquida no Gerador de vapor(m_SG)") self.cbm_SG.stateChanged.connect(self.chart_m_SG) self.cbm_SG.setChecked(False) vBox.addWidget(self.cbW_SG) vBox.addWidget(self.cbp_PR) vBox.addWidget(self.cbm_SG) vBox.addStretch(1)
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setObjectName("main_window") self.setEnabled(True) self.resize(608, 248) size_policy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) size_policy.setHorizontalStretch(0) size_policy.setVerticalStretch(0) size_policy.setHeightForWidth(self.sizePolicy().hasHeightForWidth()) self.setSizePolicy(size_policy) self.setAcceptDrops(True) self.setWindowTitle("FileHookPi") self.central_widget = QWidget(self) self.central_widget.setObjectName("central_widget") self.horizontalLayout = QHBoxLayout(self.central_widget) self.horizontalLayout.setObjectName("horizontalLayout") self.text_box = QPlainTextEdit(self.central_widget) self.text_box.setAcceptDrops(False) self.text_box.setReadOnly(True) self.text_box.setObjectName("text_box") self.horizontalLayout.addWidget(self.text_box) self.buttons_vertical_layout = QVBoxLayout() self.buttons_vertical_layout.setObjectName("buttons_vertical_layout") self.open_file_button = QPushButton(self.central_widget) self.open_file_button.setText("Open File") self.open_file_button.setObjectName("open_file_button") self.open_file_button.clicked.connect(self.select_file) self.buttons_vertical_layout.addWidget(self.open_file_button) self.line_counter = QLineEdit(self.central_widget) size_policy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed) size_policy.setHorizontalStretch(0) size_policy.setVerticalStretch(0) size_policy.setHeightForWidth( self.line_counter.sizePolicy().hasHeightForWidth()) self.line_counter.setSizePolicy(size_policy) self.line_counter.setAcceptDrops(False) self.line_counter.setReadOnly(True) self.line_counter.setObjectName("line_counter") self.buttons_vertical_layout.addWidget(self.line_counter) self.next_line_button = QPushButton(self.central_widget) self.next_line_button.setText("Next Line") self.next_line_button.setObjectName("next_line_button") self.next_line_button.clicked.connect(self.advance_line) self.buttons_vertical_layout.addWidget(self.next_line_button) self.horizontalLayout.addLayout(self.buttons_vertical_layout) self.menuBar().addMenu(FileMenu(self)) self.setCentralWidget(self.central_widget) self.current_file = None self.line_count = 0
def __init__(self, data, splineChartData, areaChartData, scatterChartData, pieChartData, bwChartData, candlestickChartData): QWidget.__init__(self) """ получение модели """ self.model = CustomTableModel(data) """переходим в класс CustomTableModel и создаем объект-таблицу, model-часть класса с помощью которого работаем с данными,имя поля-model """ self.table_view = QTableView() """полностью устраивает класс QTableView поэтому доп конструкторов и ф-ций не пишем, а просто создаем и он поле нашего класса, имя поля-table_view """ self.table_view.setModel(self.model) """может рисовать таблицу в соотвествие с полученными данными(3 столбца, нужные числа и тд) """ resize = QHeaderView.ResizeToContents """ Класс QHeaderView предоставляет строку заголовка или столбец заголовка для представлений элементов, заголовок маштабируется """ self.horizontal_header = self.table_view.horizontalHeader() self.vertical_header = self.table_view.verticalHeader() self.horizontal_header.setSectionResizeMode(resize) self.vertical_header.setSectionResizeMode(resize) self.horizontal_header.setStretchLastSection(True) """ Формируется данные для рисования заголовка """ """создание графика модуль QtChart предоставляет множество типов графиков и опций для графического представления данных. """ chart1 = QtCharts.QChart() """нас устраивает класс QChart полностью, доп методы и консрукторы не нужны """ chart1.setAnimationOptions(QtCharts.QChart.AllAnimations) """ установить параметры анимации, запускается рисование """ self.add_series("Значение", [0, 1], chart1) """подготовка вкладки на кот размещена диаграмма """ size = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) size.setHorizontalStretch(4) #----------------------------------------- chart_view1 = QtCharts.QChartView(chart1) """подготовка визуализации продолжается """ chart_view1.setRenderHint(QPainter.Antialiasing) #self.chart_view1.setSizePolicy(size) minWidth = 400 chart_view1.setMinimumWidth(minWidth) #----------------------------------------------------- chart2 = QtCharts.QChart() chart2.setAnimationOptions(QtCharts.QChart.AllAnimations) self.add_series("Глубина", [0, 2], chart2) #данные для каждого графика chart_view2 = QtCharts.QChartView(chart2) """подготовка визуализации продолжается """ chart_view2.setRenderHint(QPainter.Antialiasing) """ QWidget расположение """ """ правое расположение """ #self.chart_view2.setSizePolicy(size) chart_view2.setMinimumWidth(minWidth) main_layout = QHBoxLayout() splitter = QSplitter() dateColumn = 0 magColumn = 1 depthsColumn = 2 xDates = self.getDateAsCategoricalColumn(dateColumn) yMagnitudes = self.getFloatColumn(magColumn) yDepths = self.getFloatColumn(depthsColumn) # print("ymags") # print(yMagnitudes) # print("ydepths") # print(yDepths) bc1 = self.createBarCharts(xDates, yMagnitudes, yDepths) bar1ChartView = QtCharts.QChartView(bc1) bar1ChartView.setRenderHint(QPainter.Antialiasing) chartViewsHbox = QHBoxLayout() chartViewsHbox.addWidget(chart_view1) chartViewsHbox.addWidget(chart_view2) vbox = QVBoxLayout() vbox.addLayout(chartViewsHbox) vbox.addWidget(bar1ChartView) vboxWidget = QWidget() vboxWidget.setLayout(vbox) splitter.addWidget(vboxWidget) splitter.addWidget(self.table_view) main_layout.addWidget(splitter) # self.setLayout(main_layout) # установить макет на QWidget """ mainWidget = QWidget() mainWidget.setLayout(main_layout) tabWidget = QTabWidget() tabWidget.addTab(mainWidget, "travis scott") splineTab = ddv.charts.createSplineChart(splineChartData) tabWidget.addTab(splineTab, "spline chart") #areaTab = ddv.charts.createAreaChart(areaChartData) #tabWidget.addTab(areaTab, "area chart") scatterTab = ddv.charts.createScatterChart(scatterChartData) tabWidget.addTab(scatterTab, "scatter chart") pieTab = ddv.charts.createPieChart(pieChartData) tabWidget.addTab(pieTab, "pie chart") bwTab = ddv.charts.createBwChart(bwChartData) tabWidget.addTab(bwTab, "b w chart") candlestickTab = ddv.charts.createCandlestickChart( candlestickChartData) tabWidget.addTab(candlestickTab, "candlestick chart") grid = QGridLayout() grid.addWidget(tabWidget) #grid.addWidget(areaTab) self.setLayout(grid) """ левое расположение """ size.setHorizontalStretch(1) self.table_view.setSizePolicy(size)
def __init__(self, owner): super(self.__class__, self).__init__() Ui_BookInfo.__init__(self) self.setupUi(self) self.owner = weakref.ref(owner) self.loadingForm = QtLoading(self) self.bookId = "" self.url = "" self.path = "" self.bookName = "" self.lastEpsId = -1 self.msgForm = QtBubbleLabel(self) self.picture.installEventFilter(self) self.title.setGeometry(QRect(328, 240, 329, 27 * 4)) self.title.setWordWrap(True) self.title.setAlignment(Qt.AlignTop) self.title.setContextMenuPolicy(Qt.CustomContextMenu) self.title.customContextMenuRequested.connect(self.CopyTitle) # self.autor.setContextMenuPolicy(Qt.CustomContextMenu) # self.autor.customContextMenuRequested.connect(self.OpenAutor) layouy = self.horizontalLayout_4 self.autorList = QtCategoryList(self) layouy.addWidget(QLabel("作者:")) layouy.addWidget(self.autorList) self.autorList.itemClicked.connect(self.ClickTagsItem) self.description.setContextMenuPolicy(Qt.CustomContextMenu) self.description.customContextMenuRequested.connect( self.CopyDescription) self.description.setGeometry(QRect(328, 240, 329, 27 * 4)) self.description.setWordWrap(True) self.description.setAlignment(Qt.AlignTop) # self.categories.setGeometry(QRect(328, 240, 329, 27 * 4)) # self.categories.setWordWrap(True) # self.categories.setAlignment(Qt.AlignTop) layouy = self.horizontalLayout_6 self.categoriesList = QtCategoryList(self) layouy.addWidget(QLabel("分类:")) layouy.addWidget(self.categoriesList) self.categoriesList.itemClicked.connect(self.ClickCategoriesItem) # self.tags.setGeometry(QRect(328, 240, 329, 27 * 4)) # self.tags.setWordWrap(True) # self.tags.setAlignment(Qt.AlignTop) layouy = self.horizontalLayout_7 self.tagsList = QtCategoryList(self) layouy.addWidget(QLabel("Tags:")) layouy.addWidget(self.tagsList) self.tagsList.itemClicked.connect(self.ClickTagsItem) self.epsListWidget = QListWidget(self) self.epsListWidget.setFlow(self.epsListWidget.LeftToRight) self.epsListWidget.setWrapping(True) self.epsListWidget.setFrameShape(self.epsListWidget.NoFrame) self.epsListWidget.setResizeMode(self.epsListWidget.Adjust) self.epsLayout.addWidget(self.epsListWidget) self.listWidget = QtBookList(self, self.__class__.__name__) self.listWidget.InitUser(self.LoadNextPage) self.listWidget.doubleClicked.connect(self.OpenCommentInfo) self.childrenListWidget = QtBookList(None, self.__class__.__name__) self.childrenListWidget.InitUser(self.LoadChildrenNextPage) self.childrenWidget = QtWidgets.QWidget() layout = QHBoxLayout(self.childrenWidget) label = QLabel() label.setMinimumWidth(100) layout.addWidget(label) layout3 = QVBoxLayout() layout2 = QHBoxLayout() self.commentLine2 = QLineEdit() self.commentButton2 = QPushButton("回复") self.commentButton2.clicked.connect(self.SendCommentChildren) layout2.addWidget(self.commentLine2) layout2.addWidget(self.commentButton2) layout3.addLayout(layout2) layout3.addWidget(self.childrenListWidget) layout.addLayout(layout3) self.commentLayout.addWidget(self.listWidget) layout = QHBoxLayout() self.commentLine = QLineEdit() layout.addWidget(self.commentLine) self.commentButton = QPushButton("发送评论") layout.addWidget(self.commentButton) self.commentLayout.addLayout(layout, 1, 0) self.commentButton.clicked.connect(self.SendComment) # self.stackedWidget.addWidget(self.qtReadImg) self.epsListWidget.clicked.connect(self.OpenReadImg) self.closeFlag = self.__class__.__name__ + "-close" # 切换book时,取消加载
def __init__(self, parent=None): super().__init__(parent=parent) # Upper bound ---------------------------------------------------------------------------------------------- self.lower_bound_enable = QCheckBox() self.lower_bound_enable.setChecked(True) self.lower_bound_enable.stateChanged.connect(self.updateModel) self.lower_bound = QDoubleSpinBox() self.lower_bound.valueChanged.connect(self.updateModel) self.lower_bound.setMinimum(0) self.lower_bound.setMaximum(250) self.lower_bound.setSuffix(" Hz") layout = QHBoxLayout() layout.setContentsMargins(0, 0, 0, 0) lower_bound_widget = QWidget() lower_bound_widget.setContentsMargins(0, 0, 0, 0) lower_bound_widget.setLayout(layout) layout.addWidget(self.lower_bound_enable) layout.addWidget(self.lower_bound) # Lower bound ---------------------------------------------------------------------------------------------- self.upper_bound_enable = QCheckBox() self.upper_bound_enable.setChecked(True) self.upper_bound_enable.stateChanged.connect(self.updateModel) self.upper_bound = QDoubleSpinBox() self.upper_bound.valueChanged.connect(self.updateModel) self.upper_bound.setMinimum(0) self.upper_bound.setMaximum(250) self.upper_bound.setSuffix(" Hz") layout = QHBoxLayout() layout.setContentsMargins(0, 0, 0, 0) upper_bound_widget = QWidget() upper_bound_widget.setContentsMargins(0, 0, 0, 0) upper_bound_widget.setLayout(layout) layout.addWidget(self.upper_bound_enable) layout.addWidget(self.upper_bound) # Filter type and length ----------------------------------------------------------------------------------- self.filter_type = QComboBox() for name in BandpassFilter.filter_name_to_type: self.filter_type.addItem(name) self.filter_type.currentTextChanged.connect(self.updateModel) self.filter_length = QSpinBox() self.filter_length.setMinimum(2) self.filter_length.setMaximum(1000000) self.filter_length.setValue(1000) self.filter_length.valueChanged.connect(self.updateModel) self.filter_order = QSpinBox() self.filter_order.setRange(1, 4) self.filter_order.valueChanged.connect(self.updateModel) # ---------------------------------------------------------------------------------------------------------- layout = QFormLayout() layout.addRow("Lower bound:", lower_bound_widget) layout.addRow("Upper bound:", upper_bound_widget) layout.addRow("Filter type:", self.filter_type) layout.addRow("Filter order:", self.filter_order) layout.addRow("Filter length:", self.filter_length) self.setLayout(layout)
def __init__(self): right_width = 400 QWidget.__init__(self) # self.items = 0 self.selected_paper_index = -1 self.table = QTableWidget() self.table.setColumnCount(6) self.table.setHorizontalHeaderLabels( ['Title', 'Authors', 'Tags', 'Year', 'Name', 'Abstract']) self.table.horizontalHeader().setSectionsMovable(True) self.table.setColumnWidth(0, 300) self.table.setColumnWidth(1, 200) self.table.setColumnWidth(2, 200) self.table.setColumnWidth(3, 100) self.table.setColumnWidth(4, 400) self.table.setRowCount(len(Index.gPapers)) self.table.setSortingEnabled(False) # self.document = popplerqt5.Poppler.Document.load(Index.gPapers[0]['path']) # self.page = self.document.page(0) # self.image = self.page.renderToImage(0, 0, 0, 0) # self.preview = QLabel('') # self.preview.setPixmap(QPixmap.fromImage(self.image)) # print(Index.gPapers) self.PapersView = Index.gPapers.copy() # self.PapersView.sort(key=sortByTitle) self.update() self.sort_by_title = QPushButton('Sort by Title') self.sort_by_author = QPushButton('Sort by Authors') self.sort_by_year = QPushButton('Sort by Year') self.sort_by_recent = QPushButton('Sort by Recent') self.current_sort = 'default' self.sorting = QHBoxLayout() self.sorting.addWidget(self.sort_by_title) self.sorting.addWidget(self.sort_by_author) self.sorting.addWidget(self.sort_by_year) self.sorting.addWidget(self.sort_by_recent) self.paper_title = QLabel('') self.paper_title.setFixedWidth(right_width) self.paper_title.setWordWrap(True) self.paper_authors = QLabel('') self.paper_authors.setFixedWidth(right_width) self.paper_authors.setWordWrap(True) self.paper_tags = QLabel('') self.paper_tags.setFixedWidth(right_width) self.paper_tags.setWordWrap(True) self.paper_filename = QLabel('') self.paper_filename.setFixedWidth(right_width) self.paper_filename.setWordWrap(True) self.paper_abstract = QLabel('') self.paper_abstract.setFixedWidth(right_width) self.paper_abstract.setWordWrap(True) self.pdf_image = QLabel() self.pixmap = QPixmap() self.pdf_image.setPixmap(self.pixmap) self.pdf_image.show() self.bytearray = QByteArray() self.qimage = QImage() self.right = QVBoxLayout() self.right.addLayout(self.sorting) self.right.addWidget(self.paper_title) self.right.addWidget(self.paper_authors) self.right.addWidget(self.paper_tags) self.right.addWidget(self.pdf_image) self.right.addWidget(self.paper_filename) self.right.addWidget(self.paper_abstract) self.url_button = QPushButton('Link') self.google_button = QPushButton('Google') self.scholar_button = QPushButton('Scholar') self.citations_button = QPushButton('Citations') self.reindex_button = QPushButton('Reindex') self.add_paper_button = QPushButton('Add Publication') self.set_tags_button = QPushButton('Tags') self.open_pdf_button = QPushButton('PDF') self.buttons = QHBoxLayout() self.buttons.addWidget(self.set_tags_button) self.buttons.addWidget(self.url_button) # self.buttons.addWidget(self.scholar_button) # self.buttons.addWidget(self.google_button) # self.buttons.addWidget(self.citations_button) self.buttons.addWidget(self.reindex_button) self.buttons.addWidget(self.add_paper_button) self.buttons.addWidget(self.open_pdf_button) self.right.addLayout(self.buttons) self.layout = QHBoxLayout() self.layout.addWidget(self.table) self.layout.addLayout(self.right) self.setLayout(self.layout) # doubleclick_action = QAction("cellDoubleClicked", self) self.table.cellDoubleClicked.connect(self.cell_double_click) # self.table.cellClicked.connect(self.cell_click) self.table.selectionModel().currentRowChanged.connect(self.row_changed) # self.table. self.url_button.clicked.connect(self.url_button_click) self.google_button.clicked.connect(self.google_button_click) self.scholar_button.clicked.connect(self.scholar_button_click) self.citations_button.clicked.connect(self.citations_button_click) self.reindex_button.clicked.connect(self.reindex_button_click) self.add_paper_button.clicked.connect(self.add_paper_button_click) self.set_tags_button.clicked.connect(self.set_tags_button_click) self.open_pdf_button.clicked.connect(self.open_pdf_button_click) self.add_paper_button.setIcon(QIcon("Icons/add.svg")) self.reindex_button.setIcon(QIcon("Icons/reindex.svg")) self.url_button.setIcon(QIcon('Icons/link.svg')) self.set_tags_button.setIcon(QIcon('Icons/tag.svg')) self.open_pdf_button.setIcon(QIcon('Icons/openpdf.svg')) self.sort_by_title.clicked.connect(self.sort_by_title_click) self.sort_by_author.clicked.connect(self.sort_by_author_click) self.sort_by_year.clicked.connect(self.sort_by_year_click) self.sort_by_recent.clicked.connect(self.sort_by_recent_click)
def setupUi(self, FilewriterCtrl): FilewriterCtrl.resize(649, 450) broker_placeholder_text = "address:port/topic" self.central_widget = QWidget(FilewriterCtrl) self.vertical_layout_2 = QVBoxLayout(self.central_widget) self.vertical_layout = QVBoxLayout() self.horizontal_layout = QHBoxLayout() self.horizontal_layout.setContentsMargins(-1, -1, 0, -1) self.status_layout = QVBoxLayout() self.status_layout.setContentsMargins(-1, -1, -1, 0) self.status_topic_layout = QHBoxLayout() self.status_topic_layout.setContentsMargins(-1, -1, -1, 0) self.status_broker_label = QLabel(self.central_widget) self.status_topic_layout.addWidget(self.status_broker_label) self.status_broker_edit = QLineEdit(self.central_widget) self.status_broker_edit.setPlaceholderText(broker_placeholder_text) self.status_topic_layout.addWidget(self.status_broker_edit) self.status_layout.addLayout(self.status_topic_layout) self.line_2 = QFrame(self.central_widget) self.line_2.setFrameShape(QFrame.HLine) self.line_2.setFrameShadow(QFrame.Sunken) self.status_layout.addWidget(self.line_2) self.file_writer_table_group = QGroupBox(self.central_widget) size_policy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Expanding) size_policy.setHorizontalStretch(0) size_policy.setVerticalStretch(1) size_policy.setHeightForWidth( self.file_writer_table_group.sizePolicy().hasHeightForWidth()) self.file_writer_table_group.setSizePolicy(size_policy) self.vertical_layout_4 = QVBoxLayout(self.file_writer_table_group) self.vertical_layout_3 = QVBoxLayout() self.file_writers_list = QTreeView(self.file_writer_table_group) self.file_writers_list.setEditTriggers( QAbstractItemView.NoEditTriggers) self.file_writers_list.setIndentation(0) self.vertical_layout_3.addWidget(self.file_writers_list) self.vertical_layout_4.addLayout(self.vertical_layout_3) self.status_layout.addWidget(self.file_writer_table_group) self.files_group = QGroupBox(self.central_widget) size_policy.setHorizontalStretch(0) size_policy.setVerticalStretch(4) size_policy.setHeightForWidth( self.files_group.sizePolicy().hasHeightForWidth()) self.files_group.setSizePolicy(size_policy) self.vertical_layout_6 = QVBoxLayout(self.files_group) self.files_list = QTreeView(self.files_group) self.files_list.setIndentation(0) self.vertical_layout_6.addWidget(self.files_list) self.vertical_layout_5 = QVBoxLayout() self.horizontal_layout_4 = QHBoxLayout() spacer = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.horizontal_layout_4.addItem(spacer) self.stop_file_writing_button = QPushButton(self.files_group) self.stop_file_writing_button.setEnabled(False) self.horizontal_layout_4.addWidget(self.stop_file_writing_button) self.vertical_layout_5.addLayout(self.horizontal_layout_4) self.vertical_layout_6.addLayout(self.vertical_layout_5) self.status_layout.addWidget(self.files_group) self.horizontal_layout.addLayout(self.status_layout) self.line = QFrame(self.central_widget) self.line.setFrameShape(QFrame.VLine) self.line.setFrameShadow(QFrame.Sunken) self.horizontal_layout.addWidget(self.line) self.command_layout = QVBoxLayout() self.command_layout.setContentsMargins(-1, 0, -1, 0) self.command_broker_layout = QHBoxLayout() self.command_broker_label = QLabel(self.central_widget) self.command_broker_layout.addWidget(self.command_broker_label) self.command_broker_edit = QLineEdit(self.central_widget) self.command_broker_edit.setPlaceholderText(broker_placeholder_text) self.command_broker_layout.addWidget(self.command_broker_edit) self.command_layout.addLayout(self.command_broker_layout) self.command_widget = FilewriterCommandWidget(FilewriterCtrl) self.command_layout.addWidget(self.command_widget) self.horizontal_layout.addLayout(self.command_layout) self.vertical_layout.addLayout(self.horizontal_layout) self.vertical_layout_2.addLayout(self.vertical_layout) FilewriterCtrl.setCentralWidget(self.central_widget) self.status_broker_label.setText("Status broker") self.file_writer_table_group.setTitle("File-writers") self.files_group.setTitle("Files") self.stop_file_writing_button.setText("Stop file-writing") self.command_broker_label.setText("Command broker") self.command_broker_edit.setPlaceholderText("address:port/topic") QMetaObject.connectSlotsByName(FilewriterCtrl)