def fill_scans(self): o_step2_handler = Step2Utilities(parent=self.parent.parent) # table status self.parent.ui.table_status.insertRow(0) self.parent.ui.table_status.setRowHeight(0, self.row_height) _widget = QTextEdit() _text = "Main Table Empty?<br/><b>Post Processing>Table</b>" _widget.setHtml(_text) if o_step2_handler.is_table_empty(): _widget.setStyleSheet(self.widget_bad) else: _widget.setStyleSheet(self.widget_ok) self.parent.ui.table_status.setCellWidget(0, 0, _widget) _widget_2 = QPushButton() _widget_2.setEnabled(o_step2_handler.is_table_empty()) _widget_2.setText(self.jump_message) _widget_2.clicked.connect(self.jump_to_step2_table) self.parent.ui.table_status.setCellWidget(0, 1, _widget_2) # at least one row checked self.parent.ui.table_status.insertRow(1) self.parent.ui.table_status.setRowHeight(1, self.row_height) _widget = QTextEdit() _text = "Main Table Row Selected?<br/><b>Post Processing>Table</b>" _widget.setHtml(_text) if o_step2_handler.at_least_one_row_checked(): _widget.setStyleSheet(self.widget_ok) else: _widget.setStyleSheet(self.widget_bad) self.parent.ui.table_status.setCellWidget(1, 0, _widget) _widget_2 = QPushButton() _widget_2.setEnabled(not o_step2_handler.at_least_one_row_checked()) _widget_2.setText(self.jump_message) _widget_2.clicked.connect(self.jump_to_step2_table) self.parent.ui.table_status.setCellWidget(1, 1, _widget_2) # output file name self.parent.ui.table_status.insertRow(2) self.parent.ui.table_status.setRowHeight(2, self.row_height) _widget = QTextEdit() _text = "Output File Name?<br/><b>Post Processing>Output File Name</b>" _widget.setHtml(_text) if not o_step2_handler.is_scans_output_file_name_empty(): _widget.setStyleSheet(self.widget_ok) else: _widget.setStyleSheet(self.widget_bad) self.parent.ui.table_status.setCellWidget(2, 0, _widget) _widget_2 = QPushButton() _widget_2.setEnabled(o_step2_handler.is_scans_output_file_name_empty()) _widget_2.setText(self.jump_message) _widget_2.clicked.connect(self.jump_to_step2_scans_output_file_name) self.parent.ui.table_status.setCellWidget(2, 1, _widget_2)
def __init__(self): super().__init__() self.layout = QVBoxLayout() # Description title_label = QLabel( "<b>napari: a multi-dimensional image viewer for python</b>") title_label.setTextInteractionFlags(Qt.TextSelectableByMouse) self.layout.addWidget(title_label) # Add information self.infoTextBox = QTextEdit() self.infoTextBox.setTextInteractionFlags(Qt.TextSelectableByMouse) self.infoTextBox.setLineWrapMode(QTextEdit.NoWrap) self.layout.addWidget(self.infoTextBox, 1) if API_NAME == 'PySide2': API_VERSION = PYSIDE_VERSION elif API_NAME == 'PyQt5': API_VERSION = PYQT_VERSION else: API_VERSION = '' sys_version = sys.version.replace('\n', ' ') versions = (f"<b>napari</b>: {napari.__version__} <br>" f"<b>Platform</b>: {platform.platform()} <br>" f"<b>Python</b>: {sys_version} <br>" f"<b>{API_NAME}</b>: {API_VERSION} <br>" f"<b>Qt</b>: {QtCore.__version__} <br>" f"<b>VisPy</b>: {vispy.__version__} <br>" f"<b>NumPy</b>: {numpy.__version__} <br>" f"<b>SciPy</b>: {scipy.__version__} <br>" f"<b>scikit-image</b>: {skimage.__version__} <br>" f"<b>Dask</b>: {dask.__version__} <br>") sys_info_text = "<br>".join( [vispy.sys_info().split("\n")[index] for index in [-4, -3]]) text = f'{versions} <br> {sys_info_text} <br>' self.infoTextBox.setText(text) self.layout.addWidget(QLabel('<b>citation information:</b>')) citation_text = ('napari contributors (2019). napari: a ' 'multi-dimensional image viewer for python. ' 'doi:10.5281/zenodo.3555620') self.citationTextBox = QTextEdit(citation_text) self.citationTextBox.setFixedHeight(64) self.layout.addWidget(self.citationTextBox) self.setLayout(self.layout)
def createBottomLeftTabWidget(self): self.bottomLeftTabWidget = QTabWidget() self.bottomLeftTabWidget.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Ignored) tab1 = QWidget() tableWidget = QTableWidget(10, 10) tab1hbox = QHBoxLayout() tab1hbox.setContentsMargins(5, 5, 5, 5) tab1hbox.addWidget(tableWidget) tab1.setLayout(tab1hbox) tab2 = QWidget() textEdit = QTextEdit() textEdit.setPlainText("Twinkle, twinkle, little star,\n" "How I wonder what you are.\n" "Up above the world so high,\n" "Like a diamond in the sky.\n" "Twinkle, twinkle, little star,\n" "How I wonder what you are!\n") tab2hbox = QHBoxLayout() tab2hbox.setContentsMargins(5, 5, 5, 5) tab2hbox.addWidget(textEdit) tab2.setLayout(tab2hbox) self.bottomLeftTabWidget.addTab(tab1, "&Table") self.bottomLeftTabWidget.addTab(tab2, "Text &Edit")
def show_tb(parent): tbdialog = QDialog(parent=parent.parent()) tbdialog.setModal(True) # this is about the minimum width to not get rewrap # and the minimum height to not have scrollbar tbdialog.resize(650, 270) tbdialog.setLayout(QVBoxLayout()) text = QTextEdit() theme = get_theme( get_settings().appearance.theme, as_dict=False ) _highlight = Pylighter( # noqa: F841 text.document(), "python", theme.syntax_style ) text.setText(notification.as_text()) text.setReadOnly(True) btn = QPushButton(trans._('Enter Debugger')) def _enter_debug_mode(): btn.setText( trans._( 'Now Debugging. Please quit debugger in console to continue' ) ) _debug_tb(notification.exception.__traceback__) btn.setText(trans._('Enter Debugger')) btn.clicked.connect(_enter_debug_mode) tbdialog.layout().addWidget(text) tbdialog.layout().addWidget(btn, 0, Qt.AlignRight) tbdialog.show()
def test_qtbug35861(qtbot): """This test will detect if upstream QTBUG-35861 is fixed. If that happens, then the workarounds for spyder-ide/spyder#12663 can be removed. Such a fix would probably only happen in the most recent Qt version however... See also https://bugreports.qt.io/browse/QTBUG-35861 """ widget = QTextEdit(None) qtbot.addWidget(widget) widget.show() cursor = widget.textCursor() cursor.setPosition(0) # Build the text from a single character since a non-fixed width # font is used by default. cursor.insertText("0000000000\n" * 5) expected_column = 5 cursor.setPosition(expected_column) widget.setTextCursor(cursor) assert widget.textCursor().columnNumber() == expected_column for line in range(4): qtbot.keyClick(widget, Qt.Key_Backspace) assert widget.textCursor().columnNumber() == (expected_column - 1) qtbot.keyClick(widget, Qt.Key_Down) assert widget.textCursor().columnNumber() == expected_column for line in range(4): qtbot.keyClick(widget, Qt.Key_Backspace) assert widget.textCursor().columnNumber() == (expected_column - 1) qtbot.keyClick(widget, Qt.Key_Up) assert widget.textCursor().columnNumber() == expected_column
def show_tb(parent): tbdialog = QDialog(parent=parent.parent()) tbdialog.setModal(True) # this is about the minimum width to not get rewrap # and the minimum height to not have scrollbar tbdialog.resize(650, 270) tbdialog.setLayout(QVBoxLayout()) text = QTextEdit() text.setHtml(notification.as_html()) text.setReadOnly(True) btn = QPushButton('Enter Debugger') def _enter_debug_mode(): btn.setText( 'Now Debugging. Please quit debugger in console ' 'to continue' ) _debug_tb(notification.exception.__traceback__) btn.setText('Enter Debugger') btn.clicked.connect(_enter_debug_mode) tbdialog.layout().addWidget(text) tbdialog.layout().addWidget(btn, 0, Qt.AlignRight) tbdialog.show()
def __init__(self, parent=None): super(Console, self).__init__(parent) self.json_decode_warning = None self.widget = QWidget(self) self.console_layout = QVBoxLayout(self.widget) self.widget.setLayout(self.console_layout) self.output_label = QLabel(self.widget) self.output_label.setText("Output") self.output_edit = QTextEdit(self.widget) self.output_edit.setReadOnly(True) self.highlighter = Highlighter(self.output_edit.document()) self.output_edit.setStyleSheet("background-color: rgb(0, 0, 0);") self.output_edit.setTextColor(QColor(0, 255, 0)) self.output_edit.setFont(QFont(self.output_edit.currentFont().family(), 10)) self.input_label = QLabel(self.widget) self.input_label.setText("Command") self.input_edit = QLineEdit(self.widget) self.input_edit.setStyleSheet("background-color: rgb(0, 0, 0); color: rgb(0, 255, 0)") self.input_edit.setFont(QFont(self.output_edit.currentFont().family(), 10)) self.send_button = QPushButton(self.widget) self.send_button.setObjectName("send_button") self.send_button.setText("Send command") self.console_layout.addWidget(self.output_label) self.console_layout.addWidget(self.output_edit) self.console_layout.addWidget(self.input_label) self.console_layout.addWidget(self.input_edit) self.console_layout.addWidget(self.send_button) self.addContentWidget(self.widget) QMetaObject.connectSlotsByName(self)
def test_adding_stretch(make_napari_viewer): """Make sure that vertical stretch only gets added when appropriate.""" viewer = make_napari_viewer() # adding a widget to the left/right will usually addStretch to the layout widg = QWidget() widg.setLayout(QVBoxLayout()) widg.layout().addWidget(QPushButton()) assert widg.layout().count() == 1 dw = viewer.window.add_dock_widget(widg, area='right') assert widg.layout().count() == 2 dw.close() # ... unless the widget has a widget with a large vertical sizePolicy widg = QWidget() widg.setLayout(QVBoxLayout()) widg.layout().addWidget(QTextEdit()) assert widg.layout().count() == 1 dw = viewer.window.add_dock_widget(widg, area='right') assert widg.layout().count() == 1 dw.close() # ... widgets on the bottom do not get stretch widg = QWidget() widg.setLayout(QHBoxLayout()) widg.layout().addWidget(QPushButton()) assert widg.layout().count() == 1 dw = viewer.window.add_dock_widget(widg, area='bottom') assert widg.layout().count() == 1 dw.close()
def _credits_tab(): #scroll = QScrollArea() #scroll.setWidget(self) #scroll.setWidgetResizable(True) ##scroll.setFixedHeight(400) #layout.addWidget(scroll) #vbox = QVBoxLayout() #vbox.addLayout(layout) #vbox.addStretch() scrollArea = QScrollArea() scrollArea.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) scrollArea.setWidgetResizable(True) #scrollArea->setGeometry( 10, 10, 200, 200 ); package_tab = QWidget() scrollArea.setWidget(package_tab) widget = QWidget(scrollArea) vbox = QVBoxLayout(widget) text = QTextEdit(CREDITS) text.setReadOnly(True) vbox.addWidget(text) #vbox.addLayout(scrollArea) package_tab = QWidget() package_tab.setLayout(vbox) return package_tab
def showText(self): """ Creates a dialog to show the generated text output. """ try: generatedText = self.genText() except ValueError: return self.txtwin = QDialog() self.txtedt = QTextEdit() self.txtbtn = QPushButton('OK') self.txtwin.layout = QVBoxLayout(self.txtwin) self.txtwin.layout.addWidget(self.txtedt) self.txtwin.layout.addWidget(self.txtbtn) self.txtbtn.clicked.connect(self.txtwin.deleteLater) self.txtedt.setText(generatedText) self.txtedt.setReadOnly(True) self.txtwin.setWindowTitle('Resolution information') self.txtwin.setWindowModality(Qt.ApplicationModal) self.txtwin.setAttribute(Qt.WA_DeleteOnClose) self.txtwin.setMinimumSize(400, 600) self.txtwin.resize(400, 600) self.txtwin.show() self.txtloop = QEventLoop() self.txtloop.exec_()
def __init__(self): super(LogViewerDialog, self).__init__() # Widgets self.label = QLabel('Select log file:') self.combobox = QComboBox() self.text_edit = QTextEdit() # Widget setup self.text_edit.setFrameStyle(QFrame.Plain) self.setWindowTitle('Log Viewer') self.setMinimumWidth(600) self.setMinimumHeight(400) self.text_edit.setReadOnly(True) # Layouts top_layout = QHBoxLayout() top_layout.addWidget(self.label) top_layout.addWidget(self.combobox) layout = QVBoxLayout() layout.addLayout(top_layout) layout.addWidget(self.text_edit) self.setLayout(layout) # Signals self.combobox.currentIndexChanged.connect(self.update_text) # Setup() self.setup() self.update_style_sheet()
def setup_page(self): text = _("Email server") default = 'localhost' self.server = self.create_lineedit(text, default=default) self.layout.addWidget(self.server) text = _("Sender") default = 'email address e.g. [email protected]' self.sender = self.create_lineedit(text, default=default) self.layout.addWidget(self.sender) text = _("Receivers") default = 'email addresses separated by comma' self.receivers = self.create_lineedit(text, default=default) self.layout.addWidget(self.receivers) text = _("Subject") self.subject = self.create_lineedit(text) self.layout.addWidget(self.subject) self.body = QTextEdit(self) self.body.setFontFamily("monospace") self.body.setText(self.helpMessage) self.layout.addWidget(self.body) action = self.create_action() self.layout.addWidget(action)
def addShowCaseInfo(self): case_widget = QWidget() layout = QVBoxLayout() case_selector = CaseSelector(update_ert=False, help_link="init/selected_case_info") row1 = createRow(QLabel("Select case:"), case_selector) layout.addLayout(row1) self._case_info_area = QTextEdit() self._case_info_area.setReadOnly(True) self._case_info_area.setMinimumHeight(300) row2 = createRow(QLabel("Case info:"), self._case_info_area) layout.addLayout(row2) case_widget.setLayout(layout) case_selector.currentIndexChanged[str].connect(self._showInfoForCase) ERT.ertChanged.connect(self._showInfoForCase) self.addTab(case_widget, "Case Info") self._showInfoForCase()
def __init__(self, appdata: CnaData): QWidget.__init__(self) self.appdata = appdata self.layout = QVBoxLayout() label = QLabel("Description") self.layout.addWidget(label) self.description = QTextEdit() self.description.setPlaceholderText("Enter a project description") self.layout.addWidget(self.description) h1 = QHBoxLayout() label = QLabel("Optimization direction") h1.addWidget(label) self.opt_direction = QComboBox() self.opt_direction.insertItem(1, "minimize") self.opt_direction.insertItem(2, "maximize") h1.addWidget(self.opt_direction) self.layout.addItem(h1) self.setLayout(self.layout) self.description.textChanged.connect(self.description_changed) self.opt_direction.currentTextChanged.connect( self.opt_direction_changed) self.update()
def __init__(self, parent=None, *, file_path="", calib_preview=""): super().__init__(parent) self.setWindowTitle("View Calibration Standard") self.setMinimumSize(300, 400) self.resize(700, 700) # Displayed data (must be set before the dialog is shown self.file_path = file_path self.calib_preview = calib_preview vbox = QVBoxLayout() hbox = QHBoxLayout() hbox.addWidget(QLabel("<b>Source file:</b> "), 0, Qt.AlignTop) file_path = textwrap.fill(self.file_path, width=80) hbox.addWidget(QLabel(file_path), 0, Qt.AlignTop) hbox.addStretch(1) vbox.addLayout(hbox) te = QTextEdit() te.setReadOnly(True) te.setText(self.calib_preview) vbox.addWidget(te) button_box = QDialogButtonBox(QDialogButtonBox.Close) button_box.accepted.connect(self.accept) button_box.rejected.connect(self.reject) vbox.addWidget(button_box) self.setLayout(vbox)
def __init__(self, parent=None): super(TermsFrame, self).__init__(parent) self.setObjectName("botnet_termsframe_start") self.disable_next_on_enter = True self.widget_layout = QVBoxLayout(self) self.setLayout(self.widget_layout) self.terms = QTextEdit(self) self.terms.setReadOnly(True) self.terms.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) self.terms.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.terms.setLineWrapMode(QTextEdit.WidgetWidth) self.terms.setWordWrapMode(QTextOption.WrapAnywhere) with open(os.path.join(sys.path[0], "../LICENSE")) as f: self.terms.setText(f.read()) self.widget_layout.addWidget(self.terms) self.accept = QCheckBox(self) self.accept.setChecked(False) self.accept.setText("Accept license") self.accept.setObjectName("license_checkbox") self.widget_layout.addWidget(self.accept) QMetaObject.connectSlotsByName(self)
def __init__(self, item, parent_layout): super(TextEditWidget, self).__init__(item, parent_layout) self.edit = self.group = QTextEdit() self.edit.setToolTip(item.get_help()) if hasattr(item, "min_equals_max") and item.min_equals_max(): if item.check_item(): self.edit.setEnabled(False) self.edit.setToolTip(_("Value is forced to %d") % item.get_max()) self.edit.textChanged.connect(self.text_changed)
def __init__(self, viewer, key_map_handler, parent=None): super().__init__(parent=parent) self.viewer = viewer self.layout = QVBoxLayout() self.setWindowTitle(trans._('Keybindings')) self.setWindowModality(Qt.NonModal) self.setLayout(self.layout) # stacked key bindings widgets self.textEditBox = QTextEdit() self.textEditBox.setTextInteractionFlags(Qt.TextSelectableByMouse) self.textEditBox.setMinimumWidth(360) # Can switch to a normal dict when our minimum Python is 3.7 self.key_bindings_strs = OrderedDict() self.key_bindings_strs[self.ALL_ACTIVE_KEYBINDINGS] = '' self.key_map_handler = key_map_handler theme = get_theme(self.viewer.theme) col = theme['secondary'] layers = [ napari.layers.Image, napari.layers.Labels, napari.layers.Points, napari.layers.Shapes, napari.layers.Surface, napari.layers.Vectors, ] layer_shortcuts = action_manager._get_layer_shortcuts(layers) for layer in layers: if len(layer.class_keymap) == 0: text = trans._('No key bindings') else: text = get_key_bindings_summary(layer_shortcuts[layer], col=col) # TODO: Add localization. Add localized layer name to layer types. self.key_bindings_strs[f"{layer.__name__} layer"] = text # layer type selection self.layerTypeComboBox = QComboBox() self.layerTypeComboBox.addItems(list(self.key_bindings_strs)) self.layerTypeComboBox.activated[str].connect(self.change_layer_type) self.layerTypeComboBox.setCurrentText(self.ALL_ACTIVE_KEYBINDINGS) layer_type_layout = QHBoxLayout() layer_type_layout.setContentsMargins(10, 5, 0, 0) layer_type_layout.addWidget(self.layerTypeComboBox) layer_type_layout.addStretch(1) layer_type_layout.setSpacing(0) self.layout.addLayout(layer_type_layout) self.layout.addWidget(self.textEditBox, 1) self.viewer.events.theme.connect(self.update_active_layer) self.update_active_layer()
def __init__(self, theme='dark', emphasized=False): super().__init__(None) self.setProperty('emphasized', emphasized) self.setStyleSheet(template(raw_stylesheet, **palettes[theme])) lay = QVBoxLayout() self.setLayout(lay) lay.addWidget(QPushButton('push button')) box = QComboBox() box.addItems(['a', 'b', 'c', 'cd']) lay.addWidget(box) lay.addWidget(QFontComboBox()) hbox = QHBoxLayout() chk = QCheckBox('tristate') chk.setToolTip('I am a tooltip') chk.setTristate(True) chk.setCheckState(Qt.PartiallyChecked) chk3 = QCheckBox('checked') chk3.setChecked(True) hbox.addWidget(QCheckBox('unchecked')) hbox.addWidget(chk) hbox.addWidget(chk3) lay.addLayout(hbox) lay.addWidget(TabDemo(emphasized=emphasized)) sld = QSlider(Qt.Horizontal) sld.setValue(50) lay.addWidget(sld) scroll = QScrollBar(Qt.Horizontal) scroll.setValue(50) lay.addWidget(scroll) lay.addWidget(QHRangeSlider(parent=self)) text = QTextEdit() text.setMaximumHeight(100) text.setHtml(blurb) lay.addWidget(text) lay.addWidget(QTimeEdit()) edit = QLineEdit() edit.setPlaceholderText('LineEdit placeholder...') lay.addWidget(edit) lay.addWidget(QLabel('label')) prog = QProgressBar() prog.setValue(50) lay.addWidget(prog) groupBox = QGroupBox("Exclusive Radio Buttons") radio1 = QRadioButton("&Radio button 1") radio2 = QRadioButton("R&adio button 2") radio3 = QRadioButton("Ra&dio button 3") radio1.setChecked(True) hbox = QHBoxLayout() hbox.addWidget(radio1) hbox.addWidget(radio2) hbox.addWidget(radio3) hbox.addStretch(1) groupBox.setLayout(hbox) lay.addWidget(groupBox)
def _create_actions(self): self.logger.info("MainWindow._create_actions") self.newAct = QAction(self.style().standardIcon(QStyle.SP_FileIcon), "&New", self, shortcut=QKeySequence.New, statusTip="Create a new file", triggered=self.newFile) self.openAct = QAction(self.style().standardIcon( QStyle.SP_DirOpenIcon), "&Open...", self, shortcut=QKeySequence.Open, statusTip="Open an existing file", triggered=self.open) self.saveAct = QAction(self.style().standardIcon( QStyle.SP_DialogSaveButton), "&Save", self, shortcut=QKeySequence.Save, statusTip="Save the document to disk", triggered=self.save) self.saveAsAct = QAction( self.style().standardIcon(QStyle.SP_DialogSaveButton), "Save &As...", self, shortcut=QKeySequence.SaveAs, statusTip="Save the document under a new name", triggered=self.saveAs) self.exitAct = QAction(self.style().standardIcon( QStyle.SP_DialogCloseButton), "E&xit", self, shortcut="Ctrl+Q", statusTip="Exit the application", triggered=self.close) self.textEdit = QTextEdit() self.aboutAct = QAction(self.style().standardIcon( QStyle.SP_MessageBoxInformation), "&About", self, statusTip="Show the application's About box", triggered=self.about) self.aboutQtAct = QAction(self.style().standardIcon( QStyle.SP_TitleBarMenuButton), "About &Qt", self, statusTip="Show the Qt library's About box", triggered=QApplication().aboutQt)
def __init__(self, data, nastran_io, win_parent=None): """ Saves the data members from data and performs type checks """ PyDialog.__init__(self, data, win_parent) self._updated_preference = False self._default_font_size = data['font_size'] model = data['model'] # type: BDF obj = data['obj'] # type: ??? variables = data['variables'] # type: List[???] self.obj = obj self.variables = variables self.update_function_name = data['update_function_name'] self.nastran_io = nastran_io #-------------------------------------------- grid_objs, grid = create_grid_objs_from_model(model, variables, obj) self.setWindowTitle('Modify %s' % obj.type) self.grid_objs = grid_objs #self.create_widgets() #self.create_layout() #self.set_connections() desc_comment = QHBoxLayout() self.desc = QLabel('Description:') self.comment = QTextEdit(obj.comment.replace('\n', '<br>')) desc_comment.addWidget(self.desc) desc_comment.addWidget(self.comment) #----------------------------------------------------------------------- # closing self.apply_button = QPushButton("Apply") self.ok_button = QPushButton("OK") self.cancel_button = QPushButton("Cancel") #----------------------------------------------------------------------- ok_cancel_box = QHBoxLayout() ok_cancel_box.addWidget(self.apply_button) ok_cancel_box.addWidget(self.ok_button) ok_cancel_box.addWidget(self.cancel_button) vbox = QVBoxLayout() vbox.addLayout(grid) vbox.addLayout(desc_comment) #vbox.addLayout(hbox) vbox.addStretch() vbox.addLayout(ok_cancel_box) self.setLayout(vbox) self.grid_objs = grid_objs self.on_font(self._default_font_size) self.apply_button.clicked.connect(self.on_apply) self.ok_button.clicked.connect(self.on_ok) self.cancel_button.clicked.connect(self.close)
def __init__(self): super().__init__() layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) self.progress_bar = QProgressBar() self.log_area = QTextEdit() layout.addWidget(self.progress_bar) layout.addWidget(self.log_area) self.setLayout(layout)
def get_code_block(): if is_pygments and IS_SCINTILLA: #self.enter_data = QSyntaxHighlighting() enter_data = SimplePythonEditorWidget() else: enter_data = QTextEdit() font = QFont() font.setFamily('Courier') enter_data.setFont(font) return enter_data
def __init__(self, parent): super(ModuleDetailsWindow, self).__init__(parent) self.content_widget = QWidget(self) self.widget_layout = QFormLayout(self.content_widget) self.content_widget.setLayout(self.widget_layout) self.addContentWidget(self.content_widget) self.module_code = QTextEdit(self.content_widget) self.module_code.setReadOnly(True) self.widget_layout.addWidget(self.module_code)
def set_kwargs(self, task): """Creates widgets for each task keyword argument.""" if not task or task is self.current_task: return else: for widget_dict in self.widgets: key_widget = widget_dict.get("key") value_widget = widget_dict.get("value") if key_widget: key_widget.setParent(None) self.widget_layout.removeWidget(key_widget) value_widget.setParent(None) self.widget_layout.removeWidget(value_widget) self.widgets.clear() self.current_task = task kwargs_dict = task.get("kwargs") for key, value in kwargs_dict.items(): key_label = QLabel(str(key).replace("_", " ").capitalize(), self) val_type = value.get("type") default = value.get("default") if val_type is int: value_widget = QSpinBox(self) value_widget.setRange(-1, 100000) value_widget.setValue(int(default)) elif val_type is list: value_widget = QListWidget(self) value_widget.addItems([str(item) for item in default]) for i in range(value_widget.count()): value_widget.item(i).setFlags( value_widget.item(i).flags() | Qt.ItemIsEditable) elif val_type is str: value_widget = QLineEdit(self) value_widget.setText(str(default)) elif val_type is bool: key_label = None value_widget = QCheckBox( str(key).replace("_", " ").capitalize(), self) value_widget.setChecked(bool(default)) elif val_type == "text": value_widget = QTextEdit(self) value_widget.setText(str(default)) else: continue value_widget.setObjectName(key) value_widget.setToolTip(value.get("description")) self.widgets.append({"key": key_label, "value": value_widget}) if type(value_widget) is QCheckBox: self.widget_layout.addWidget(value_widget) else: self.widget_layout.addRow(key_label, value_widget)
def __init__(self, parent=None): super().__init__(parent) self.layout = QVBoxLayout() # Description title_label = QLabel( trans._( "<b>napari: a multi-dimensional image viewer for python</b>" ) ) title_label.setTextInteractionFlags(Qt.TextSelectableByMouse) self.layout.addWidget(title_label) # Add information self.infoTextBox = QTextEdit() self.infoTextBox.setTextInteractionFlags(Qt.TextSelectableByMouse) self.infoTextBox.setLineWrapMode(QTextEdit.NoWrap) # Add text copy button self.infoCopyButton = QtCopyToClipboardButton(self.infoTextBox) self.info_layout = QHBoxLayout() self.info_layout.addWidget(self.infoTextBox, 1) self.info_layout.addWidget(self.infoCopyButton, 0, Qt.AlignTop) self.info_layout.setAlignment(Qt.AlignTop) self.layout.addLayout(self.info_layout) self.infoTextBox.setText(sys_info(as_html=True)) self.infoTextBox.setMinimumSize( self.infoTextBox.document().size().width() + 19, min(self.infoTextBox.document().size().height() + 10, 500), ) self.layout.addWidget(QLabel(trans._('<b>citation information:</b>'))) self.citationTextBox = QTextEdit(citation_text) self.citationTextBox.setFixedHeight(64) self.citationCopyButton = QtCopyToClipboardButton(self.citationTextBox) self.citation_layout = QHBoxLayout() self.citation_layout.addWidget(self.citationTextBox, 1) self.citation_layout.addWidget(self.citationCopyButton, 0, Qt.AlignTop) self.layout.addLayout(self.citation_layout) self.setLayout(self.layout)
def on_value_show_requested(self): from qtpy.QtWidgets import QDialog, QVBoxLayout val_dlg = QDialog() val_dlg.setLayout(QVBoxLayout()) text_show = QTextEdit() text = 'inputs:\n' + repr( self.node.content.input_args) + '\n' + 'results:\n' + repr( self.node.content.results) text_show.setText(text) val_dlg.layout().addWidget(text_show) val_dlg.exec_()
def __init__(self, text, title='', font=None, parent=None, readonly=False, size=(400, 300)): QDialog.__init__(self, parent) # Destroying the C++ object right after closing the dialog box, # otherwise it may be garbage-collected in another QThread # (e.g. the editor's analysis thread in Spyder), thus leading to # a segmentation fault on UNIX or an application crash on Windows self.setAttribute(Qt.WA_DeleteOnClose) self.text = None # Display text as unicode if it comes as bytes, so users see # its right representation if is_binary_string(text): self.is_binary = True text = to_text_string(text, 'utf8') else: self.is_binary = False self.layout = QVBoxLayout() self.setLayout(self.layout) # Text edit self.edit = QTextEdit(parent) self.edit.textChanged.connect(self.text_changed) self.edit.setReadOnly(readonly) self.edit.setPlainText(text) if font is None: font = get_font() self.edit.setFont(font) self.layout.addWidget(self.edit) # Buttons configuration buttons = QDialogButtonBox.Ok if not readonly: buttons = buttons | QDialogButtonBox.Cancel bbox = QDialogButtonBox(buttons) bbox.accepted.connect(self.accept) bbox.rejected.connect(self.reject) self.layout.addWidget(bbox) # Make the dialog act as a window self.setWindowFlags(Qt.Window) self.setWindowIcon(ima.icon('edit')) self.setWindowTitle(_("Text editor") + \ "%s" % (" - "+str(title) if str(title) else "")) self.resize(size[0], size[1])
def __init__(self, viewer): super().__init__() self.viewer = viewer self.layout = QVBoxLayout() self.setWindowTitle('Keybindings') self.setWindowModality(Qt.NonModal) self.setLayout(self.layout) # stacked keybindings widgets self.textEditBox = QTextEdit() self.textEditBox.setTextInteractionFlags(Qt.TextSelectableByMouse) self.textEditBox.setMinimumWidth(360) # Can switch to a normal dict when our minimum Python is 3.7 self.keybindings_strs = OrderedDict() self.keybindings_strs[self.ALL_ACTIVE_KEYBINDINGS] = '' col = self.viewer.palette['secondary'] layers = [ napari.layers.Image, napari.layers.Labels, napari.layers.Points, napari.layers.Shapes, napari.layers.Surface, napari.layers.Vectors, ] for layer in layers: if len(layer.class_keymap) == 0: text = 'No keybindings' else: text = get_keybindings_summary(layer.class_keymap, col=col) self.keybindings_strs[f"{layer.__name__} layer"] = text # layer type selection self.layerTypeComboBox = QComboBox() for name in self.keybindings_strs: self.layerTypeComboBox.addItem(name) self.layerTypeComboBox.activated[str].connect( lambda text=self.layerTypeComboBox: self.change_layer_type(text) ) self.layerTypeComboBox.setCurrentText(self.ALL_ACTIVE_KEYBINDINGS) # self.change_layer_type(current_layer) layer_type_layout = QHBoxLayout() layer_type_layout.setContentsMargins(10, 5, 0, 0) layer_type_layout.addWidget(self.layerTypeComboBox) layer_type_layout.addStretch(1) layer_type_layout.setSpacing(0) self.layout.addLayout(layer_type_layout) self.layout.addWidget(self.textEditBox, 1) self.viewer.events.active_layer.connect(self.update_active_layer) self.viewer.events.palette.connect(self.update_active_layer) self.update_active_layer(None)
def show_tb(parent): tbdialog = QDialog(parent=parent.parent()) tbdialog.setModal(True) # this is about the minimum width to not get rewrap # and the minimum height to not have scrollbar tbdialog.resize(650, 270) tbdialog.setLayout(QVBoxLayout()) text = QTextEdit() text.setHtml(notification.as_html()) text.setReadOnly(True) tbdialog.layout().addWidget(text) tbdialog.show()