def __init__(self, parent=None, **kwargs): QDialog.__init__(self, parent, **kwargs) if sys.platform == "darwin": self.setAttribute(Qt.WA_MacSmallSize, True) self.__setupUi()
def __init__(self, parent=None, flags=Qt.WindowFlags(0), model=None, **kwargs): QDialog.__init__(self, parent, flags, **kwargs) self.__setupUi() if model is not None: self.setModel(model)
def keyPressEvent(self, e): """Handle default key actions or pass the event to the inherited method """ if (int(e.modifiers()), e.key()) in OWWidget.defaultKeyActions: OWWidget.defaultKeyActions[int(e.modifiers()), e.key()](self) else: QDialog.keyPressEvent(self, e)
def __init__(self, master): """Initialize the attributes and set up the interface""" QDialog.__init__(self, windowTitle=self.captionTitle) WidgetMessagesMixin.__init__(self) self.setLayout(QVBoxLayout()) self.insert_message_bar() self.layout().insertWidget(0, self.message_bar) self.master = master self.keep_running = False self.scheduled_call = None self.saved_state = None self.saved_progress = 0 self.scores = [] self.rank_model = QStandardItemModel(self) self.rank_table = view = QTableView( selectionBehavior=QTableView.SelectRows, selectionMode=QTableView.SingleSelection, showGrid=False) view.setItemDelegate(HorizontalGridDelegate()) view.setModel(self.rank_model) view.selectionModel().selectionChanged.connect( self.on_selection_changed) view.horizontalHeader().setStretchLastSection(True) view.horizontalHeader().hide() self.layout().addWidget(view) self.button = gui.button(self, self, "Start", callback=self.toggle, default=True)
def showEvent(self, event): """Overloaded to restore the geometry when the widget is shown """ QDialog.showEvent(self, event) if self.save_position and not self.__was_restored: # Restore saved geometry on show self.__restoreWidgetGeometry() self.__was_restored = True self.__quicktipOnce()
def showEvent(self, event): """Overloaded to restore the geometry when the widget is shown """ QDialog.showEvent(self, event) if self.save_position and not self.__was_restored: # Restore saved geometry on (first) show self.__restoreWidgetGeometry() self.__was_restored = True self.__quicktipOnce()
def __init__(self, master): """Initialize the attributes and set up the interface""" QDialog.__init__(self, master, windowTitle=self.captionTitle) WidgetMessagesMixin.__init__(self) self.setLayout(QVBoxLayout()) self.insert_message_bar() self.layout().insertWidget(0, self.message_bar) self.master = master self.keep_running = False self.scheduled_call = None self.saved_state = None self.saved_progress = 0 self.scores = [] self.add_to_model = queue.Queue() self.update_timer = QTimer(self) self.update_timer.timeout.connect(self._update) self.update_timer.setInterval(200) self._thread = None self._worker = None self.filter = QLineEdit() self.filter.setPlaceholderText("Filter ...") self.filter.textChanged.connect(self.filter_changed) self.layout().addWidget(self.filter) # Remove focus from line edit self.setFocus(Qt.ActiveWindowFocusReason) self.rank_model = QStandardItemModel(self) self.model_proxy = QSortFilterProxyModel(self, filterCaseSensitivity=False) self.model_proxy.setSourceModel(self.rank_model) self.rank_table = view = QTableView( selectionBehavior=QTableView.SelectRows, selectionMode=QTableView.SingleSelection, showGrid=False, editTriggers=gui.TableView.NoEditTriggers) if self._has_bars: view.setItemDelegate(TableBarItem()) else: view.setItemDelegate(HorizontalGridDelegate()) view.setModel(self.model_proxy) view.selectionModel().selectionChanged.connect( self.on_selection_changed) view.horizontalHeader().setStretchLastSection(True) view.horizontalHeader().hide() self.layout().addWidget(view) self.button = gui.button(self, self, "Start", callback=self.toggle, default=True)
def resizeEvent(self, event): """Overloaded to save the geometry (width and height) when the widget is resized. """ QDialog.resizeEvent(self, event) # Don't store geometry if the widget is not visible # (the widget receives a resizeEvent (with the default sizeHint) # before first showEvent and we must not overwrite the the # savedGeometry with it) if self.save_position and self.isVisible(): self.__updateSavedGeometry()
def showEvent(self, event): """Overloaded to restore the geometry when the widget is shown """ QDialog.showEvent(self, event) if self.save_position and not self.__was_restored: # Restore saved geometry on (first) show if self.__splitter is not None: self.__splitter.setControlAreaVisible(self.controlAreaVisible) self.__restoreWidgetGeometry() self.__was_restored = True self.__quicktipOnce()
def __new__(cls, *args, captionTitle=None, **kwargs): self = super().__new__(cls, None, cls.get_flags()) QDialog.__init__(self, None, self.get_flags()) OWComponent.__init__(self) WidgetMessagesMixin.__init__(self) WidgetSignalsMixin.__init__(self) stored_settings = kwargs.get('stored_settings', None) if self.settingsHandler: self.settingsHandler.initialize(self, stored_settings) self.signalManager = kwargs.get('signal_manager', None) self.__env = _asmappingproxy(kwargs.get("env", {})) self.graphButton = None self.report_button = None OWWidget.widget_id += 1 self.widget_id = OWWidget.widget_id captionTitle = self.name if captionTitle is None else captionTitle # must be set without invoking setCaption self.captionTitle = captionTitle self.setWindowTitle(captionTitle) self.setFocusPolicy(Qt.StrongFocus) self.__blocking = False # flag indicating if the widget's position was already restored self.__was_restored = False self.__statusMessage = "" self.__msgwidget = None self.__msgchoice = 0 self.left_side = None self.controlArea = self.mainArea = self.buttonsArea = None self.splitter = None if self.want_basic_layout: self.set_basic_layout() sc = QShortcut(QKeySequence(Qt.ShiftModifier | Qt.Key_F1), self) sc.activated.connect(self.__quicktip) sc = QShortcut(QKeySequence.Copy, self) sc.activated.connect(self.copy_to_clipboard) if self.controlArea is not None: # Otherwise, the first control has focus self.controlArea.setFocus(Qt.ActiveWindowFocusReason) return self
def __init__(self, master): """Initialize the attributes and set up the interface""" QDialog.__init__(self, master, windowTitle=self.captionTitle) WidgetMessagesMixin.__init__(self) self.setLayout(QVBoxLayout()) self.insert_message_bar() self.layout().insertWidget(0, self.message_bar) self.master = master self.keep_running = False self.scheduled_call = None self.saved_state = None self.saved_progress = 0 self.scores = [] self.add_to_model = queue.Queue() self.update_timer = QTimer(self) self.update_timer.timeout.connect(self._update) self.update_timer.setInterval(200) self._thread = None self._worker = None self.filter = QLineEdit() self.filter.setPlaceholderText("Filter ...") self.filter.textChanged.connect(self.filter_changed) self.layout().addWidget(self.filter) # Remove focus from line edit self.setFocus(Qt.ActiveWindowFocusReason) self.rank_model = QStandardItemModel(self) self.model_proxy = QSortFilterProxyModel( self, filterCaseSensitivity=False) self.model_proxy.setSourceModel(self.rank_model) self.rank_table = view = QTableView( selectionBehavior=QTableView.SelectRows, selectionMode=QTableView.SingleSelection, showGrid=False, editTriggers=gui.TableView.NoEditTriggers) if self._has_bars: view.setItemDelegate(TableBarItem()) else: view.setItemDelegate(HorizontalGridDelegate()) view.setModel(self.model_proxy) view.selectionModel().selectionChanged.connect( self.on_selection_changed) view.horizontalHeader().setStretchLastSection(True) view.horizontalHeader().hide() self.layout().addWidget(view) self.button = gui.button( self, self, "Start", callback=self.toggle, default=True)
def test_escape_hides(self): # NOTE: This test doesn't work as it is supposed to. window = QDialog() w = WebviewWidget(window) window.show() w.setFocus(Qt.OtherFocusReason) self.assertFalse(window.isHidden()) # This event is sent to the wrong widget. Should be sent to the # inner HTML view as focused, but no amount of clicking/ focusing # helped, neither did invoking JS handler directly. I'll live with it. QTest.keyClick(w, Qt.Key_Escape) self.assertTrue(window.isHidden())
def acceptChanges(self): state = self.getCurrentState() oldState = self.colorSchemas[self.selectedSchemaIndex][1] if state == oldState: QDialog.accept(self) else: # if we change the default schema, we must save it under a new name if self.colorSchemas[self.selectedSchemaIndex][0] == "Default": if (QMessageBox.information( self, "Question", "The color schema has changed. Save?", QMessageBox.Yes | QMessageBox.Discard, ) == QMessageBox.Discard): QDialog.reject(self) else: self.selectedSchemaIndex = self.schemaCombo.count() - 1 self.schemaCombo.setCurrentIndex(self.selectedSchemaIndex) self.paletteSelected() QDialog.accept(self) # simply save the new users schema else: self.colorSchemas[self.selectedSchemaIndex] = [ self.colorSchemas[self.selectedSchemaIndex][0], state, ] QDialog.accept(self)
def __init__(self, master, model): QDialog.__init__(self) self.master = master self.setWindowFlags(Qt.Tool) self.setLayout(QVBoxLayout()) self.setWindowTitle("Hidden Axes") btns_area = gui.widgetBox( self, addSpace=0, spacing=9, orientation=Qt.Horizontal, sizePolicy=QSizePolicy(*SIZE_POLICY_FIXED), ) self.btn_add = QPushButton("Add", autoDefault=False, sizePolicy=QSizePolicy(*SIZE_POLICY_FIXED)) self.btn_add.clicked.connect(self._add) self.btn_cancel = QPushButton( "Cancel", autoDefault=False, sizePolicy=QSizePolicy(*SIZE_POLICY_FIXED)) self.btn_cancel.clicked.connect(self._cancel) btns_area.layout().addWidget(self.btn_add) btns_area.layout().addWidget(self.btn_cancel) filter_edit, view = variables_filter(model=model) self.view_other = view view.setMinimumSize(QSize(30, 60)) view.setSizePolicy(*SIZE_POLICY_ADAPTING) view.viewport().setAcceptDrops(True) self.layout().addWidget(filter_edit) self.layout().addWidget(view) self.layout().addWidget(btns_area) master = self.master box = master.box master.master.setEnabled(False) self.move(box.mapToGlobal(QPoint(0, box.pos().y() + box.height()))) self.setFixedWidth(master.master.controlArea.width()) self.setMinimumHeight(300) self.show() self.raise_() self.activateWindow()
def __init__(self, parent=None): QDialog.__init__(self, parent) self.setupUi(self) self.hotkey_screen.setText(settings['hotkey/screenshot']) self.hotkey_clip.setText(settings['hotkey/clipboard']) self.autostart.setChecked(self.is_autostart_enabled()) self.buttons.clicked.connect(self.save_or_close) if os.name == 'nt': # Windows hijacks PrintScreen button for it's screenshotting functionality therefore hotkey widget can not # capture this key. We must bind it manually. self.printscreen.setChecked(self.hotkey_screen.text() == 'Print') self.hotkey_screen.setEnabled(not self.printscreen.isChecked()) self.printscreen.toggled.connect(self._windows_print_screen) self.clear_hotkey_screen.pressed.connect(lambda: self.printscreen.setChecked(False)) else: self.printscreen.setVisible(False) self.qt_version.setText('{} ({})'.format(QT_VERSION_STR, AnyQt.USED_API)) self.resize(self.width(), 0)
def __init__(self, master, model): QDialog.__init__(self) self.master = master self.setWindowFlags(Qt.Tool) self.setLayout(QVBoxLayout()) self.setWindowTitle("Hidden Axes") btns_area = gui.widgetBox( self, addSpace=0, spacing=9, orientation=Qt.Horizontal, sizePolicy=QSizePolicy(*SIZE_POLICY_FIXED) ) self.btn_add = QPushButton( "Add", autoDefault=False, sizePolicy=QSizePolicy(*SIZE_POLICY_FIXED) ) self.btn_add.clicked.connect(self._add) self.btn_cancel = QPushButton( "Cancel", autoDefault=False, sizePolicy=QSizePolicy(*SIZE_POLICY_FIXED) ) self.btn_cancel.clicked.connect(self._cancel) btns_area.layout().addWidget(self.btn_add) btns_area.layout().addWidget(self.btn_cancel) filter_edit, view = variables_filter(model=model) self.view_other = view view.setMinimumSize(QSize(30, 60)) view.setSizePolicy(*SIZE_POLICY_ADAPTING) view.viewport().setAcceptDrops(True) self.layout().addWidget(filter_edit) self.layout().addWidget(view) self.layout().addWidget(btns_area) master = self.master box = master.box master.master.setEnabled(False) self.move(box.mapToGlobal(QPoint(0, box.pos().y() + box.height()))) self.setFixedWidth(master.master.controlArea.width()) self.setMinimumHeight(300) self.show() self.raise_() self.activateWindow()
def __run_add_package_dialog(self): self.__add_package_by_name_dialog = dlg = QDialog( self, windowTitle="Add add-on by name", ) dlg.setAttribute(Qt.WA_DeleteOnClose) vlayout = QVBoxLayout() form = QFormLayout() form.setContentsMargins(0, 0, 0, 0) nameentry = QLineEdit(placeholderText="Package name", toolTip="Enter a package name as displayed on " "PyPI (capitalization is not important)") nameentry.setMinimumWidth(250) form.addRow("Name:", nameentry) vlayout.addLayout(form) buttons = QDialogButtonBox(standardButtons=QDialogButtonBox.Ok | QDialogButtonBox.Cancel) okb = buttons.button(QDialogButtonBox.Ok) okb.setEnabled(False) okb.setText("Add") def changed(name): okb.setEnabled(bool(name)) nameentry.textChanged.connect(changed) vlayout.addWidget(buttons) vlayout.setSizeConstraint(QVBoxLayout.SetFixedSize) dlg.setLayout(vlayout) f = None def query(): nonlocal f name = nameentry.text() def query_pypi(name): # type: (str) -> _QueryResult res, = pypi_json_query_project_meta([name]) inst = None # type: Optional[Installable] if res is not None: inst = installable_from_json_response(res) else: inst = None return _QueryResult(queryname=name, installable=inst) f = self.__executor.submit(query_pypi, name) okb.setDisabled(True) f.add_done_callback( method_queued(self.__on_add_single_query_finish, (object, ))) buttons.accepted.connect(query) buttons.rejected.connect(dlg.reject) dlg.exec_()
def showEvent(self, event): """Overloaded to restore the geometry when the widget is shown """ QDialog.showEvent(self, event) if self.save_position and not self.__was_restored: # Restore saved geometry on (first) show if self.__splitter is not None: self.__setControlAreaVisible(self.controlAreaVisible) if self.savedWidgetGeometry is not None: self.__restoreWidgetGeometry(bytes(self.savedWidgetGeometry)) self.__was_restored = True if not self.__was_shown: # Mark as explicitly moved/resized if not already. QDialog would # otherwise adjust position/size on subsequent hide/show # (move/resize events coming from the window manager do not set # these flags). self.setAttribute(Qt.WA_Moved, True) self.setAttribute(Qt.WA_Resized, True) self.__was_shown = True self.__quicktipOnce()
def test_escape_hides(self): window = QDialog() w = WebviewWidget(window) window.show() w.setFocus(Qt.OtherFocusReason) self.assertFalse(window.isHidden()) QTest.keyClick(w, Qt.Key_Escape) self.assertTrue(window.isHidden())
def test_exposeObject(self): test = self OBJ = dict(a=[1, 2], b='c') done = False class Bridge(QObject): @pyqtSlot('QVariantMap') def check_object(self, obj): nonlocal test, done, OBJ done = True test.assertEqual(obj, OBJ) w = WebviewWidget(bridge=Bridge()) w.setUrl(SOME_URL) w.exposeObject('obj', OBJ) w.evalJS('''pybridge.check_object(window.obj);''') self.process_events(lambda: done) self.assertRaises(ValueError, w.exposeObject, 'obj', QDialog())
def __init__(self, parent, windowTitle='Date picker'): super().__init__(parent, windowTitle=windowTitle) self.parent = parent self.setLayout(QVBoxLayout()) self.mainArea = gui.widgetBox(self) self.layout().addWidget(self.mainArea) self.cal = QCalendarWidget(self) self.cal.setGridVisible(True) self.cal.move(20, 20) self.cal.clicked[QDate].connect(self.set_date) self.mainArea.layout().addWidget(self.cal) # Set the default date. self.picked_date = self.cal.selectedDate().toString('yyyy/MM/dd') gui.button(self.mainArea, self, 'OK', lambda: QDialog.accept(self))
def acceptChanges(self): state = self.getCurrentState() oldState = self.colorSchemas[self.selectedSchemaIndex][1] if state == oldState: QDialog.accept(self) else: # if we change the default schema, we must save it under a new name if self.colorSchemas[self.selectedSchemaIndex][0] == "Default": if QMessageBox.information( self, 'Question', 'The color schema has changed. Save?', QMessageBox.Yes | QMessageBox.Discard) == QMessageBox.Discard: QDialog.reject(self) else: self.selectedSchemaIndex = self.schemaCombo.count() - 1 self.schemaCombo.setCurrentIndex(self.selectedSchemaIndex) self.paletteSelected() QDialog.accept(self) # simply save the new users schema else: self.colorSchemas[self.selectedSchemaIndex] = \ [self.colorSchemas[self.selectedSchemaIndex][0], state] QDialog.accept(self)
def __init__(self, *args, **kwargs): QDialog.__init__(self, *args, **kwargs) self.setModal(True) self.__setupUi()
@_set_control_value.register(QCheckBox) def _(check: QCheckBox, value: bool): check.setChecked(value) @_set_control_value.register(QLineEdit) def _(edit: QLineEdit, value: str): edit.setText(value) if __name__ == "__main__": from AnyQt.QtWidgets import QPushButton app = QApplication(sys.argv) w = QDialog() w.setFixedSize(400, 200) _items = ["Foo", "Bar", "Baz", "Foo Bar", "Foo Baz", "Bar Baz"] _settings = { "Box 1": { "Item 1": { "Parameter 1": (_items[:10], _items[0]), "Parameter 2": (_items[:10], _items[0]), "Parameter 3": (range(4, 20), 5) }, "Item 2": { "Parameter 1": (_items[:10], _items[1]), "Parameter 2": (range(4, 20), 6), "Parameter 3": (range(4, 20), 7) },
def __init__(self, *args, **kwargs): QDialog.__init__(self, *args, **kwargs) self.scheme = None self.__autoCommit = True self.__setupUi()
def showEvent(self, event): # Clear the triggered action before show. self.__triggeredAction = None QDialog.showEvent(self, event)
def closeEvent(self, event): """Overloaded to save the geometry when the widget is closed """ if self.save_position and self.isVisible(): self.__updateSavedGeometry() QDialog.closeEvent(self, event)
def __init__(self, parent=None, *, mime=None, image=None): QDialog.__init__(self, parent) self.setupUi(self) self._backend = None self._backend_controls = {} self._label_anonymous = self.tr('Anonymous') self._label_select_login = self.tr('Select Login') self._available_backends = [] data = None file_name = None if image: self._share_type = Bi.Image data = image elif mime: if mime.hasImage(): self._share_type = Bi.Image data = mime.imageData() elif mime.hasUrls(): urls = mime.urls() if len(urls) == 1: file_path = os.path.realpath(urls[0].toLocalFile()) if not os.path.isfile(file_path): raise ValueError(self.tr('Directories can not be shared')) file_size = os.path.getsize(file_path) file_name = os.path.basename(file_path) if file_size > const.BIG_FILE_WARNING_SIZE: file_name = os.path.basename(file_path) nice_size = format_size(file_size) result = QMessageBox.warning(self, self.tr('Warning'), self.tr('File "{file_name}" {nice_size}.\n' 'Are you sure you want to continue?').format(**locals()), QMessageBox.Yes | QMessageBox.Abort) if result == QMessageBox.Abort: QTimer.singleShot(0, self.reject) return if file_has_extension(file_path, ('png', 'jpg', 'jpeg', 'bmp', 'gif')): image = QPixmap(file_path) else: image = None if not image or image.isNull(): data = read_text_from_file(file_path) if data: self._share_type = Bi.Text else: self._share_type = Bi.File data = file_path else: self._share_type = Bi.Image data = image else: raise ValueError(self.tr('Can not share more than one file')) elif mime.hasText(): self._share_type = Bi.Text data = mime.text() else: raise RuntimeError() if not data: raise ValueError(self.tr('There is no content in your clipboard.\nCopy something in order to share it.')) if self._share_type == Bi.Image: if not file_name: file_name = '{}-{}.png'.format('screenshot' if image else 'image', int(time())) if data.width() > self.image_preview.width() or data.height() > self.image_preview.height(): preview = data.scaled(self.image_preview.size(), Qt.KeepAspectRatio) else: preview = data if isinstance(preview, QImage): preview = QPixmap.fromImage(preview) self.image_preview.setPixmap(preview) self.preview_stack.setCurrentIndex(0) buf = QBuffer() data.save(buf, 'png', 100) data = buf.data().data() elif self._share_type == Bi.Text: if not file_name: file_name = 'file-{}.txt'.format(int(time())) self.text_preview.setPlainText(dedent_text_and_truncate(data, 128)) self.preview_stack.setCurrentIndex(1) elif self._share_type == Bi.File: if not file_name: file_name = 'file-{}.bin'.format(int(time())) self.text_preview.setPlainText(self.tr('No preview available')) self.preview_stack.setCurrentIndex(1) self._file_name = file_name self._data = data self.populate_backends() self.share.pressed.connect(self.share_item) self.add_login.pressed.connect(self.on_add_login) self.logout.pressed.connect(self.logout_selected) self.login_list.currentIndexChanged.connect(self.select_login) min_height = self.backend_selector.minimumSizeHint().height() if os.name == 'nt': # On windows tab widget and font are rather small min_height -= 5 for el in (self.add_login, self.login_list, self.logout, self.share): font = el.font() font.setPointSize(12) el.setFont(font) self.login_list.setFixedHeight(self.add_login.height() - 2) self.backend_selector.setFixedHeight(min_height) self.backend_selector.currentChanged.connect(self.select_backend) if self.backend_selector.height() < self.add_login.height(): # Move tab widget down based on size of controls on the right. Makes widgets below seem to belong to the # selected tab. self.backend_selector.move(0, self.add_login.height() - self.backend_selector.height()) self.resize(self.width(), 0) self.setWindowState((self.windowState() & ~Qt.WindowMinimized) | Qt.WindowActive) self.raise_() self.activateWindow()
def __run_add_package_dialog(self): dlg = QDialog(self, windowTitle="Add add-on by name") dlg.setAttribute(Qt.WA_DeleteOnClose) vlayout = QVBoxLayout() form = QFormLayout() form.setContentsMargins(0, 0, 0, 0) nameentry = QLineEdit( placeholderText="Package name", toolTip="Enter a package name as displayed on " "PyPI (capitalization is not important)") nameentry.setMinimumWidth(250) form.addRow("Name:", nameentry) vlayout.addLayout(form) buttons = QDialogButtonBox( standardButtons=QDialogButtonBox.Ok | QDialogButtonBox.Cancel ) okb = buttons.button(QDialogButtonBox.Ok) okb.setEnabled(False) okb.setText("Add") def changed(name): okb.setEnabled(bool(name)) nameentry.textChanged.connect(changed) vlayout.addWidget(buttons) vlayout.setSizeConstraint(QVBoxLayout.SetFixedSize) dlg.setLayout(vlayout) f = None def query(): nonlocal f name = nameentry.text() f = self._executor.submit(pypi_json_query_project_meta, [name]) okb.setDisabled(True) def ondone(f): error_text = "" error_details = "" try: pkgs = f.result() except Exception: log.error("Query error:", exc_info=True) error_text = "Failed to query package index" error_details = traceback.format_exc() pkg = None else: pkg = pkgs[0] if pkg is None: error_text = "'{}' not was not found".format(name) if pkg: method_queued(self.add_package, (object,))(pkg) method_queued(dlg.accept, ())() else: method_queued(self.__show_error_for_query, (str, str)) \ (error_text, error_details) method_queued(dlg.reject, ())() f.add_done_callback(ondone) buttons.accepted.connect(query) buttons.rejected.connect(dlg.reject) dlg.exec_()
def hideEvent(self, event): """Overloaded to save the geometry when the widget is hidden """ if self.save_position: self.__updateSavedGeometry() QDialog.hideEvent(self, event)
def __run_add_package_dialog(self): dlg = QDialog(self, windowTitle="Add add-on by name") dlg.setAttribute(Qt.WA_DeleteOnClose) vlayout = QVBoxLayout() form = QFormLayout() form.setContentsMargins(0, 0, 0, 0) nameentry = QLineEdit(placeholderText="Package name", toolTip="Enter a package name as displayed on " "PyPI (capitalization is not important)") nameentry.setMinimumWidth(250) form.addRow("Name:", nameentry) vlayout.addLayout(form) buttons = QDialogButtonBox(standardButtons=QDialogButtonBox.Ok | QDialogButtonBox.Cancel) okb = buttons.button(QDialogButtonBox.Ok) okb.setEnabled(False) okb.setText("Add") def changed(name): okb.setEnabled(bool(name)) nameentry.textChanged.connect(changed) vlayout.addWidget(buttons) vlayout.setSizeConstraint(QVBoxLayout.SetFixedSize) dlg.setLayout(vlayout) f = None def query(): nonlocal f name = nameentry.text() f = self._executor.submit(pypi_json_query_project_meta, [name]) okb.setDisabled(True) def ondone(f): error_text = "" error_details = "" try: pkgs = f.result() except Exception: log.error("Query error:", exc_info=True) error_text = "Failed to query package index" error_details = traceback.format_exc() pkg = None else: pkg = pkgs[0] if pkg is None: error_text = "'{}' not was not found".format(name) if pkg: method_queued(self.add_package, (object, ))(pkg) method_queued(dlg.accept, ())() else: method_queued(self.__show_error_for_query, (str, str)) \ (error_text, error_details) method_queued(dlg.reject, ())() f.add_done_callback(ondone) buttons.accepted.connect(query) buttons.rejected.connect(dlg.reject) dlg.exec_()
def ShowInfo(self): dialog = QDialog(self) dialog.setModal(False) dialog.setLayout(QVBoxLayout()) label = QLabel(dialog) label.setText( "Ontology:\n" + self.ontology.header if self.ontology else "Ontology not loaded!") dialog.layout().addWidget(label) label = QLabel(dialog) label.setText("Annotations:\n" + self.annotations.header.replace("!", "") if self. annotations else "Annotations not loaded!") dialog.layout().addWidget(label) dialog.show()
painter.setBrush(brush) painter.setPen(pen) painter.drawRect(rect) painter.setPen(Qt.black) painter.drawText(8, 4 + h, text) def formatValues(self, valueMin, valueMax): """Format the int values into strings that are shown if showText is True.""" return str(valueMin), str(valueMax) if __name__ == "__main__": from AnyQt.QtWidgets import QApplication, QDialog, QGridLayout, QLabel app = QApplication([]) win = QDialog() grid = QGridLayout(win) win.setLayout(grid) kwargs = dict( minimum=0, maximum=100, tickInterval=5, minimumValue=20, maximumValue=80, slidersMoved=print ) grid.addWidget(QLabel('RangeSlider:', win), 0, 0) grid.addWidget(RangeSlider(win, orientation=Qt.Horizontal, **kwargs), 0, 1) grid.addWidget(QLabel('RangeSlider:', win), 1, 0) grid.addWidget(RangeSlider(win, orientation=Qt.Vertical, **kwargs), 1, 1)
if is_horizontal: painter.drawText(x1 + 3, rect.y() + height - 2, strMin) painter.drawText(x2 - widthMax - 1, rect.y() + rect.height() - 2, strMax) else: painter.drawText(rect.x() + 1, x1 + height, strMin) painter.drawText(rect.x() + rect.width() - widthMax - 1, x2 - 2, strMax) def formatValues(self, valueMin, valueMax): """Format the int values into strings that are shown if showText is True.""" return str(valueMin), str(valueMax) if __name__ == "__main__": from AnyQt.QtWidgets import QApplication, QDialog, QGridLayout, QLabel app = QApplication([]) win = QDialog() grid = QGridLayout(win) win.setLayout(grid) kwargs = dict( minimum=0, maximum=100, tickInterval=5, minimumValue=20, maximumValue=80, slidersMoved=print ) grid.addWidget(QLabel('RangeSlider:', win), 0, 0) grid.addWidget(RangeSlider(win, orientation=Qt.Horizontal, **kwargs), 0, 1) grid.addWidget(QLabel('RangeSlider:', win), 1, 0) grid.addWidget(RangeSlider(win, orientation=Qt.Vertical, **kwargs), 1, 1)
def __init__(self, *args, **kwargs): QDialog.__init__(self, *args, **kwargs) self.__triggeredAction = None self.setupUi()
def ShowInfo(self): dialog = QDialog(self) dialog.setModal(False) dialog.setLayout(QVBoxLayout()) label = QLabel(dialog) label.setText("Ontology:\n" + self.ontology.header if self.ontology else "Ontology not loaded!") dialog.layout().addWidget(label) label = QLabel(dialog) label.setText("Annotations:\n" + self.annotations.header.replace("!", "") if self.annotations else "Annotations not loaded!") dialog.layout().addWidget(label) dialog.show()
def accept(self): self.offerSave() QDialog.accept(self)