def __init__(self, parent=None): QWidget.__init__(self, parent) self.hue = QSlider() self.hue.setMaximum(100) self.hue.setOrientation(Qt.Horizontal) self.hue.valueChanged.connect(self._changed) self.saturation = QSlider() self.saturation.setMaximum(100) self.saturation.setOrientation(Qt.Horizontal) self.saturation.valueChanged.connect(self._changed) self.value = QSlider() self.value.setMaximum(100) self.value.setOrientation(Qt.Horizontal) self.value.valueChanged.connect(self._changed) layout = QGridLayout(self) layout.addWidget(QLabel("H")) layout.addWidget(QLabel("S")) layout.addWidget(QLabel("V")) layout.addWidget(self.hue, 0, 1) layout.addWidget(self.saturation, 1, 1) layout.addWidget(self.value, 2, 1)
class UIStreamPreviewNode(UINodeBase): def __init__(self, raw_node): super(UIStreamPreviewNode, self).__init__(raw_node) self.resizable = True self.Imagelabel = QLabel("") self.pixmap = QtGui.QPixmap(None) self.addWidget(self.Imagelabel) self.updateSize() def Tick(self, *args, **kwargs): self.updateSize() super(UIStreamPreviewNode, self).Tick(*args, **kwargs) def updateSize(self): if getattr(self._rawNode, 'display_frame', None) is None: return frame = self._rawNode.display_frame.copy() width = int(self.customLayout.geometry().width()) height = int(frame.shape[0] * (width / frame.shape[1])) display_frame = cv2.cvtColor(cv2.resize(frame, (width, height)), cv2.COLOR_BGR2RGB) qImg = QtGui.QImage(display_frame.data, width, height, 3 * width, QtGui.QImage.Format_RGB888) self.pixmap = QtGui.QPixmap(qImg) self.Imagelabel.setPixmap(self.pixmap)
def __init__(self, raw_node): super(UIOpenCvBaseNode, self).__init__(raw_node) self.imagePin = self._rawNode.getPinByName("img") if not self.imagePin: for pin in self._rawNode.outputs.values(): if pin.dataType == "ImagePin": self.imagePin = pin break if self.imagePin: self.actionViewImage = self._menu.addAction("ViewImage") self.actionViewImage.triggered.connect(self.viewImage) self.actionViewImage.setData( NodeActionButtonInfo( os.path.dirname(__file__) + "/resources/ojo.svg", ViewImageNodeActionButton)) self.actionRefreshImage = self._menu.addAction( "RefreshCurrentNode") self.actionRefreshImage.triggered.connect(self.refreshImage) self.actionRefreshImage.setData( NodeActionButtonInfo( os.path.dirname(__file__) + "/resources/reload.svg", NodeActionButtonBase)) self.displayImage = False self.resizable = True self.Imagelabel = QLabel("noImage") self.pixmap = QtGui.QPixmap() self.addWidget(self.Imagelabel) self.Imagelabel.setVisible(False) self.updateSize() self._rawNode.computed.connect(self.updateImage)
def __init__(self, page, parent=None): super(HelpForm, self).__init__(parent) self.setAttribute(Qt.WA_DeleteOnClose) self.setAttribute(Qt.WA_GroupLeader) backAction = QAction(QIcon(":/back.png"), "&Back", self) backAction.setShortcut(QKeySequence.Back) homeAction = QAction(QIcon(":/home.png"), "&Home", self) homeAction.setShortcut("Home") self.pageLabel = QLabel() toolBar = QToolBar() toolBar.addAction(backAction) toolBar.addAction(homeAction) toolBar.addWidget(self.pageLabel) self.textBrowser = QTextBrowser() layout = QVBoxLayout() layout.addWidget(toolBar) layout.addWidget(self.textBrowser, 1) self.setLayout(layout) backAction.triggered.connect(self.tbackward) homeAction.triggered.connect(self.thome) self.textBrowser.sourceChanged.connect(self.updatePageTitle) self.textBrowser.setSearchPaths([":/help"]) self.textBrowser.setSource(QUrl(page)) self.resize(400, 600) self.setWindowTitle("{0} Help".format(QApplication.applicationName()))
def __init__(self, raw_node): super(UIStreamPreviewNode, self).__init__(raw_node) self.resizable = True self.Imagelabel = QLabel("") self.pixmap = QtGui.QPixmap(None) self.addWidget(self.Imagelabel) self.updateSize()
def create(self, delete_if_exists=True): """ Creates a new shelf """ if delete_if_exists: if gui.shelf_exists(shelf_name=self._name): gui.delete_shelf(shelf_name=self._name) else: assert not gui.shelf_exists(self._name), 'Shelf with name {} already exists!'.format(self._name) self._name = gui.create_shelf(name=self._name) # ======================================================================================================== self._category_btn = QPushButton('') if self._category_icon: self._category_btn.setIcon(self._category_icon) self._category_btn.setIconSize(QSize(18, 18)) self._category_menu = QMenu(self._category_btn) self._category_btn.setStyleSheet( 'QPushButton::menu-indicator {image: url(myindicator.png);' 'subcontrol-position: right center;subcontrol-origin: padding;left: -2px;}') self._category_btn.setMenu(self._category_menu) self._category_lbl = QLabel('MAIN') self._category_lbl.setAlignment(Qt.AlignCenter) font = self._category_lbl.font() font.setPointSize(6) self._category_lbl.setFont(font) menu_ptr = maya.OpenMayaUI.MQtUtil.findControl(self._name) menu_widget = qtutils.wrapinstance(menu_ptr, QWidget) menu_widget.layout().addWidget(self._category_btn) menu_widget.layout().addWidget(self._category_lbl) self.add_separator()
def __init__(self, data, parent=None): QWidget.__init__(self, parent) self.data = data vbox = QVBoxLayout() self.setLayout(vbox) title = QLabel('Indexed Strings') vbox.addWidget(title) self.frame = QFrame() vbox.addWidget(self.frame) self.vbox = QVBoxLayout() self.frame.setLayout(self.vbox) self.frame.setFrameShape(QFrame.Panel) self.frame.setFrameShadow(QFrame.Sunken) self.table = QTableWidget() self.table.horizontalHeader().hide() self.vbox.addWidget(self.table) self.table.hide() self.noStringsLabel = QLabel('<i>No indexed strings</i>') self.vbox.addWidget(self.noStringsLabel) self.widgets = [] self.populate() self.data.attributeAdded.connect(self.attributeAddedSlot) self.data.dataReset.connect(self.dataResetSlot) self.data.dirtied.connect(self.dataDirtiedSlot)
def set_sp(self): """set energy entry for when sp model changes""" self.sp_table.setRowCount(0) if self.sp_selector.currentIndex() >= 0: fr = self.sp_selector.currentData() self.check_geometry_rmsd("SP") self.sp_table.insertRow(0) nrg_label = QLabel("E =") nrg_label.setAlignment(Qt.AlignRight | Qt.AlignVCenter) self.sp_table.setCellWidget(0, 0, nrg_label) unit_label = ReadOnlyTableItem() unit_label.setData(Qt.DisplayRole, "E\u2095") unit_label.setTextAlignment(Qt.AlignLeft | Qt.AlignVCenter) self.sp_table.setItem(0, 2, unit_label) sp_nrg = SmallLineEdit("%.6f" % fr.other['energy']) sp_nrg.setReadOnly(True) sp_nrg.setFrame(False) self.sp_table.setCellWidget(0, 1, sp_nrg) self.sp_table.resizeRowToContents(0) self.sp_table.resizeColumnToContents(0) self.sp_table.resizeColumnToContents(1) self.sp_table.resizeColumnToContents(2) self.update_sum()
def ui(self): self.color_buttons = list() super(BaseColorDialog, self).ui() grid_layout = layouts.GridLayout() grid_layout.setAlignment(Qt.AlignTop) self.main_layout.addLayout(grid_layout) color_index = 0 for i in range(0, 4): for j in range(0, 8): color_btn = QPushButton() color_btn.setMinimumHeight(35) color_btn.setMinimumWidth(35) self.color_buttons.append(color_btn) color_btn.setStyleSheet( 'background-color:rgb(%s,%s,%s);' % (self.maya_colors[color_index][0] * 255, self.maya_colors[color_index][1] * 255, self.maya_colors[color_index][2] * 255)) grid_layout.addWidget(color_btn, i, j) color_index += 1 selected_color_layout = layouts.HorizontalLayout() self.main_layout.addLayout(selected_color_layout) self.color_slider = QSlider(Qt.Horizontal) self.color_slider.setMinimum(0) self.color_slider.setMaximum(31) self.color_slider.setValue(2) self.color_slider.setStyleSheet( "QSlider::groove:horizontal {border: 1px solid #999999;height: 25px; /* the groove expands " "to the size of the slider by default. by giving it a height, it has a fixed size */background: " "qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #B1B1B1, stop:1 #c4c4c4);margin: 2px 0;}" "QSlider::handle:horizontal {background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 #b4b4b4," " stop:1 #8f8f8f);border: 1px solid #5c5c5c;width: 10px;margin: -2px 0; /* handle is placed by " "default on the contents rect of the groove. Expand outside the groove */border-radius: 1px;}" ) selected_color_layout.addWidget(self.color_slider) color_label_layout = layouts.HorizontalLayout(margins=(10, 10, 10, 10)) self.main_layout.addLayout(color_label_layout) self.color_lbl = QLabel() self.color_lbl.setStyleSheet( "border: 1px solid black; background-color:rgb(0, 0, 0);") self.color_lbl.setMinimumWidth(45) self.color_lbl.setMaximumWidth(80) self.color_lbl.setMinimumHeight(80) self.color_lbl.setAlignment(Qt.AlignCenter) color_label_layout.addWidget(self.color_lbl) bottom_layout = layouts.HorizontalLayout() bottom_layout.setAlignment(Qt.AlignRight) self.main_layout.addLayout(bottom_layout) self.ok_btn = QPushButton('Ok') self.cancel_btn = QPushButton('Cancel') bottom_layout.addLayout(dividers.DividerLayout()) bottom_layout.addWidget(self.ok_btn) bottom_layout.addWidget(self.cancel_btn)
def __init__(self, rawVariable, variablesWidget, parent=None): super(UIVariable, self).__init__(parent) self._rawVariable = rawVariable self.variablesWidget = variablesWidget # ui self.horizontalLayout = QHBoxLayout(self) self.horizontalLayout.setSpacing(1) self.horizontalLayout.setContentsMargins(1, 1, 1, 1) self.horizontalLayout.setObjectName("horizontalLayout") self.widget = TypeWidget(findPinClassByType(self._rawVariable.dataType).color(), self) self.widget.setObjectName("widget") self.horizontalLayout.addWidget(self.widget) self.labelName = QLabel(self) self.labelName.setStyleSheet("background:transparent") self.labelName.setObjectName("labelName") self.horizontalLayout.addWidget(self.labelName) spacerItem = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem) # find refs self.pbFindRefs = QPushButton("") self.pbFindRefs.setIcon(QtGui.QIcon(":/searching-magnifying-glass.png")) self.pbFindRefs.setObjectName("pbFindRefs") self.horizontalLayout.addWidget(self.pbFindRefs) self.pbFindRefs.clicked.connect(self.onFindRefsClicked) # kill variable self.pbKill = QPushButton("") self.pbKill.setIcon(QtGui.QIcon(":/delete_icon.png")) self.pbKill.setObjectName("pbKill") self.horizontalLayout.addWidget(self.pbKill) self.pbKill.clicked.connect(self.onKillClicked) QtCore.QMetaObject.connectSlotsByName(self) self.setName(self._rawVariable.name) self._rawVariable.setWrapper(self)
def ui(self): super(MetaCard, self).ui() self._title_layout = layouts.HorizontalLayout() self._cover_label = QLabel() self._cover_label.setFixedSize(QSize(200, 200)) self._avatar = avatar.Avatar() self._title_label = label.BaseLabel().h4() self._description_label = label.BaseLabel().secondary() self._description_label.setWordWrap(True) self._description_label.theme_elide_mode = Qt.ElideRight self._extra_btn = buttons.BaseToolButton( parent=self).image('more').icon_only() self._title_layout.addWidget(self._title_label) self._title_layout.addStretch() self._title_layout.addWidget(self._extra_btn) self._extra_btn.setVisible(self._extra) content_lyt = layouts.FormLayout(margins=(5, 5, 5, 5)) content_lyt.addRow(self._avatar, self._title_layout) content_lyt.addRow(self._description_label) self._btn_lyt = layouts.HorizontalLayout() self.main_layout.addWidget(self._cover_label) self.main_layout.addLayout(content_lyt) self.main_layout.addLayout(self._btn_lyt) self.main_layout.addStretch()
def __init__(self, raw_node): super(UIQimageDisplay, self).__init__(raw_node) self.resizable = True self.Imagelabel = QLabel("test3") self.pixmap = QtGui.QPixmap(RESOURCES_DIR + "/wizard-cat.png") self.addWidget(self.Imagelabel) self.updateSize() self._rawNode.loadImage.connect(self.onLoadImage)
def __init__(self, dock_widget, renamable=False): super(DockTitleBar, self).__init__(dock_widget) self._renamable = renamable main_layout = layouts.HorizontalLayout(margins=(0, 0, 0, 1)) self.setLayout(main_layout) self._buttons_box = QGroupBox('') self._buttons_box.setObjectName('Docked') self._buttons_layout = layouts.HorizontalLayout(spacing=1, margins=(2, 2, 2, 2)) self._buttons_box.setLayout(self._buttons_layout) main_layout.addWidget(self._buttons_box) self._icon_label = QLabel(self) self._title_label = QLabel(self) self._title_label.setStyleSheet('background: transparent') self._title_edit = QLineEdit(self) self._title_edit.setVisible(False) self._button_size = QSize(14, 14) self._dock_btn = QToolButton(self) self._dock_btn.setIcon(resources.icon('restore_window', theme='color')) self._dock_btn.setMaximumSize(self._button_size) self._dock_btn.setAutoRaise(True) self._close_btn = QToolButton(self) self._close_btn.setIcon(resources.icon('close_window', theme='color')) self._close_btn.setMaximumSize(self._button_size) self._close_btn.setAutoRaise(True) self._buttons_layout.addSpacing(2) self._buttons_layout.addWidget(self._icon_label) self._buttons_layout.addWidget(self._title_label) self._buttons_layout.addWidget(self._title_edit) self._buttons_layout.addStretch() self._buttons_layout.addSpacing(5) self._buttons_layout.addWidget(self._dock_btn) self._buttons_layout.addWidget(self._close_btn) self._buttons_box.mouseDoubleClickEvent = self.mouseDoubleClickEvent self._buttons_box.mousePressEvent = self.mousePressEvent self._buttons_box.mouseMoveEvent = self.mouseMoveEvent self._buttons_box.mouseReleaseEvent = self.mouseReleaseEvent dock_widget.featuresChanged.connect(self._on_dock_features_changed) self._title_edit.editingFinished.connect(self._on_finish_edit) self._dock_btn.clicked.connect(self._on_dock_btn_clicked) self._close_btn.clicked.connect(self._on_close_btn_clicked) self._on_dock_features_changed(dock_widget.features()) self.set_title(dock_widget.windowTitle()) dock_widget.installEventFilter(self) dock_widget.topLevelChanged.connect(self._on_change_floating_style) if hasattr(dock_widget, 'icon') and callable(dock_widget.icon): self._icon_label.setPixmap(dock_widget.icon().pixmap(QSize(16, 16)))
def __init__(self): super().__init__() if separate_colorbars: if rescale_colorbars: self.vmins = tuple(np.min(u[0]) for u in U) self.vmaxs = tuple(np.max(u[0]) for u in U) else: self.vmins = tuple(np.min(u) for u in U) self.vmaxs = tuple(np.max(u) for u in U) else: if rescale_colorbars: self.vmins = (min(np.min(u[0]) for u in U),) * len(U) self.vmaxs = (max(np.max(u[0]) for u in U),) * len(U) else: self.vmins = (min(np.min(u) for u in U),) * len(U) self.vmaxs = (max(np.max(u) for u in U),) * len(U) layout = QHBoxLayout() plot_layout = QGridLayout() self.colorbarwidgets = [cbar_widget(self, vmin=vmin, vmax=vmax) if cbar_widget else None for vmin, vmax in zip(self.vmins, self.vmaxs)] plots = [widget(self, grid, vmin=vmin, vmax=vmax, bounding_box=bounding_box, codim=codim) for vmin, vmax in zip(self.vmins, self.vmaxs)] if legend: for i, plot, colorbar, l in zip(range(len(plots)), plots, self.colorbarwidgets, legend): subplot_layout = QVBoxLayout() caption = QLabel(l) caption.setAlignment(Qt.AlignHCenter) subplot_layout.addWidget(caption) if not separate_colorbars or backend == 'matplotlib': subplot_layout.addWidget(plot) else: hlayout = QHBoxLayout() hlayout.addWidget(plot) if colorbar: hlayout.addWidget(colorbar) subplot_layout.addLayout(hlayout) plot_layout.addLayout(subplot_layout, int(i/columns), (i % columns), 1, 1) else: for i, plot, colorbar in zip(range(len(plots)), plots, self.colorbarwidgets): if not separate_colorbars or backend == 'matplotlib': plot_layout.addWidget(plot, int(i/columns), (i % columns), 1, 1) else: hlayout = QHBoxLayout() hlayout.addWidget(plot) if colorbar: hlayout.addWidget(colorbar) plot_layout.addLayout(hlayout, int(i/columns), (i % columns), 1, 1) layout.addLayout(plot_layout) if not separate_colorbars: layout.addWidget(self.colorbarwidgets[0]) for w in self.colorbarwidgets[1:]: w.setVisible(False) self.setLayout(layout) self.plots = plots
def __init__(self, settings, parent=None, description=None, pstvOnly=True): super(ConfigDialog, self).__init__(parent) self.setWindowTitle("Configure source") self.layout = QGridLayout(self) row = 0 self.widgets = {} self.settings = settings # Settings should be a dictionary for name, val in settings.items(): label = QLabel(self) label.setText(str(name)) self.layout.addWidget(label, row, 0, 1, 1) # Check the type of each setting, and create widgets accordingly if isinstance(val, str): # A string of some kind widget = QLineEdit(self) widget.setText(val) elif isinstance(val, list): # A list of alternative values, first is selected print("List: ", name) continue elif isinstance(val, bool): widget = QCheckBox(self) if val: widget.setCheckState(Qt.CheckState.Checked) else: widget.setCheckState(Qt.CheckState.Unchecked) elif isinstance(val, int): widget = QLineEdit(self) widget.setInputMask("9000000") widget.setText(str(val).strip()) elif isinstance(val, float): widget = QLineEdit(self) if pstvOnly: widget.setInputMask("0.000") widget.setText(str(val).strip()) else: print("Ignoring: " + name) continue widget.config = name self.widgets[name] = widget self.layout.addWidget(widget, row, 1, 1, 1) row += 1 # Add OK and Cancel buttons buttonbox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) buttonbox.accepted.connect(self.getValues) buttonbox.rejected.connect(self.reject) self.layout.addWidget(buttonbox, row, 1, 2, 1)
def ui(self): super(BaseSaveWidget, self).ui() title_layout = layouts.HorizontalLayout() title_layout.setContentsMargins(2, 2, 0, 0) title_layout.setSpacing(2) self._icon_lbl = QLabel() self._icon_lbl.setMaximumSize(QSize(14, 14)) self._icon_lbl.setMinimumSize(QSize(14, 14)) self._icon_lbl.setScaledContents(True) self._title_lbl = QLabel() title_layout.addWidget(self._icon_lbl) title_layout.addWidget(self._title_lbl) self._folder_widget = directory.SelectFolder('Folder', use_app_browser=True) buttons_layout = layouts.HorizontalLayout() buttons_layout.setContentsMargins(4, 4, 4, 4) buttons_layout.setSpacing(4) buttons_frame = QFrame() buttons_frame.setFrameShape(QFrame.NoFrame) buttons_frame.setFrameShadow(QFrame.Plain) buttons_frame.setLayout(buttons_layout) buttons_layout.addStretch() self.save_btn = buttons.BaseButton('Save') self.cancel_btn = buttons.BaseButton('Cancel') buttons_layout.addWidget(self.save_btn, parent=self) buttons_layout.addWidget(self.cancel_btn, parent=self) buttons_layout.addStretch() self._options_layout = layouts.VerticalLayout() self._options_layout.setContentsMargins(0, 0, 0, 0) self._options_layout.setSpacing(2) self._options_frame = QFrame() self._options_frame.setFrameShape(QFrame.NoFrame) self._options_frame.setFrameShadow(QFrame.Plain) self._options_frame.setLineWidth(0) self._options_frame.setLayout(self._options_layout) self._extra_layout = layouts.VerticalLayout() self._extra_layout.setContentsMargins(0, 0, 0, 0) self._extra_layout.setSpacing(2) self.main_layout.addLayout(title_layout) self.main_layout.addWidget(self._folder_widget) self._extra_layout.addWidget(self._options_frame) self.main_layout.addWidget(dividers.Divider()) self.main_layout.addLayout(self._extra_layout) self.main_layout.addWidget(dividers.Divider()) self.main_layout.addWidget(buttons_frame)
def __init__(self, auto_resize=False, single_row_select=True, context_menu_callback=None, last_column_stretch=True, has_counters=False, parent=None ): QFrame.__init__(self, parent) self._has_counters = has_counters self.model = None self.table_view = RowTableView(auto_resize, single_row_select, context_menu_callback, last_column_stretch) self.table_view.doubleClicked.connect(self._double_clicked) if has_counters: self.counters = Counters() self.counters.button_clicked.connect(self._counter_clicked) self.search_bar = QLineEdit() self.search_bar.setFixedHeight(SEARCHBAR_HEIGHT) self.search_bar.textChanged.connect(self.set_search_text) self.search_bar.setToolTip("Search bar") self.auto_size_button = QPushButton('<>') self.auto_size_button.setFixedSize(SEARCHBAR_HEIGHT, SEARCHBAR_HEIGHT) self.auto_size_button.clicked.connect(self._auto_size_clicked) self.auto_size_button.setToolTip("Auto size") self.status_label = QLabel(STATUS_LABEL_MESSAGE.format(0, 0)) self.status_label.setFixedWidth(STATUS_LABEL_WIDTH) self.progress_bar = QProgressBar() self.progress_bar.setFormat('') layout = QGridLayout() layout.addWidget(self.search_bar, 0, 0, 1, 3) layout.addWidget(self.auto_size_button, 0, 3) if has_counters: layout.addWidget(self.counters, 1, 0, 1, 2) layout.addWidget(self.table_view, 1, 2, 1, 2) else: layout.addWidget(self.table_view, 1, 0, 1, 4) layout.addWidget(self.status_label, 2, 0) layout.addWidget(self.progress_bar, 2, 1, 1, 3) layout.setColumnStretch(2, 100) self.setLayout(layout)
class FrameProgressBar(QFrame, object): def __init__(self, *args, **kwargs): super(FrameProgressBar, self).__init__(*args, **kwargs) layout = layouts.VerticalLayout(spacing=0, margins=(0, 0, 0, 0)) self.setLayout(layout) self._label = QLabel('', self) self._label.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) layout.addWidget(self._label) self._progress_bar = QProgressBar(self) self._progress_bar.setFormat('') self._progress_bar.setRange(0, 100) self._progress_bar.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) layout.addWidget(self._progress_bar) def reset(self): """ Reset progress bar """ self._progress_bar.reset() def set_text(self, text): """ Set the text of the progress bar :param text: str """ self._label.setText(text) def set_value(self, value): """ Set the value of the progress bar :param value: int or float """ self._progress_bar.setValue(value) def set_range(self, min_, max_): """ Set the range of the progress bar :param min_: int :param max_: int """ self._progress_bar.setRange(min_, max_)
def __init__(self): super(Widget, self).__init__() self.title = "Andrea <3" self.top = 100 self.left = 300 self.width = 200 self.height = 480 self.msg = "Nothing going on..." self.label = QLabel() self.label.setText(self.msg) self.build_button1() self.build_tab1() self.build_tab2() self.init_ui()
def add_label_from_constructed(self): label = QLabel(self._constructed) label.setOpenExternalLinks(True) label.setWordWrap(True) label.setFont(self._font) self._constructed = '' self._widgets.append(label)
def __init__(self, *args, **kwargs): super(FrameProgressBar, self).__init__(*args, **kwargs) layout = layouts.VerticalLayout(spacing=0, margins=(0, 0, 0, 0)) self.setLayout(layout) self._label = QLabel('', self) self._label.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) layout.addWidget(self._label) self._progress_bar = QProgressBar(self) self._progress_bar.setFormat('') self._progress_bar.setRange(0, 100) self._progress_bar.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) layout.addWidget(self._progress_bar)
def addWidgets(self): uiRotationLAY = self.uiTrackedRotationGRP.layout() for i in xrange(2, self.count("Rail")+1): uiLabel = QLabel("Slider {}".format(i)) uiMinRot = self._addQDoubleSpinBox(-180.0, 180.0, 15.0) uiMaxRot = self._addQDoubleSpinBox(-180.0, 180.0, 15.0) uiAxis = QComboBox() uiAxis.addItems(["X","Y","Z"]) uiSelect = QPushButton("Select") uiSet = QPushButton("Set") uiRotationLAY.addWidget(uiLabel, i, 0) uiRotationLAY.addWidget(uiMinRot, i, 1) uiRotationLAY.addWidget(uiMaxRot, i, 2) uiRotationLAY.addWidget(uiAxis, i, 3) uiRotationLAY.addWidget(uiSelect, i, 4) uiRotationLAY.addWidget(uiSet, i, 5) self.__dict__["uiMinRot{}".format(i)] = uiMinRot self.__dict__["uiMaxRot{}".format(i)] = uiMaxRot self.__dict__["uiAxis{}".format(i)] = uiAxis self.__dict__["uiSelect{}".format(i)] = uiSelect self.__dict__["uiSet{}".format(i)] = uiSet
def _build_ui(self): self._thumb_size.setRange(100, 400) self._thumb_size.setValue(settings.thumb_size) self._thumb_size.setOrientation(Qt.Horizontal) self._thumb_size.setFixedWidth(300) lyt_main = QHBoxLayout() lyt_main.setContentsMargins(0, 0, 0, 0) lyt_main.setSpacing(0) lyt_main.addStretch() lyt_main.addWidget(QLabel('%d %%' % self._thumb_size.minimum())) lyt_main.addSpacing(5) lyt_main.addWidget(self._thumb_size) lyt_main.addSpacing(5) lyt_main.addWidget(QLabel('%d %%' % self._thumb_size.maximum())) self.setLayout(lyt_main)
def main(): import sys app = QApplication(sys.argv) layout = QVBoxLayout() infos = QSerialPortInfo.availablePorts() for info in infos: s = ( f"Port: {info.portName()}", f"Location: {info.systemLocation()}", f"Description: {info.description()}", f"Manufacturer: {info.manufacturer()}", f"Serial number: {info.serialNumber()}", "Vendor Identifier: " + f"{info.vendorIdentifier():x}" if info.hasVendorIdentifier() else "", "Product Identifier: " + f"{info.productIdentifier():x}" if info.hasProductIdentifier() else "", ) label = QLabel("\n".join(s)) layout.addWidget(label) workPage = QWidget() workPage.setLayout(layout) area = QScrollArea() area.setWindowTitle("Info about all available serial ports.") area.setWidget(workPage) area.show() sys.exit(app.exec_())
def _build_ui(self): fields = self._entity.fields() fields = [ x for x in fields if x.name not in ('id', 'timestamp', 'username') ] lyt_buttons = QHBoxLayout() lyt_buttons.addWidget(self._btn_create) lyt_buttons.addWidget(self._btn_cancel) r = 0 lyt_grid = QGridLayout() for field in fields: editor = QLineEdit() if field.type == int: editor = QSpinBox() editor.setRange(-1000000, 1000000) self._wdg_map[field] = editor lyt_grid.addWidget(QLabel(field.name), r, 0) lyt_grid.addWidget(editor, r, 1) r += 1 lyt_main = QVBoxLayout() lyt_main.addLayout(lyt_grid) lyt_main.addLayout(lyt_buttons) self.setLayout(lyt_main)
def ui(self): super(ProjectSettingsWidget, self).ui() image_layout = layouts.HorizontalLayout(spacing=2, margins=(2, 2, 2, 2)) image_layout.setContentsMargins(2, 2, 2, 2) image_layout.setSpacing(2) self.main_layout.addLayout(image_layout) self._project_image = QLabel() self._project_image.setAlignment(Qt.AlignCenter) image_layout.addStretch() image_layout.addWidget(self._project_image) image_layout.addStretch() self._settings_tab = tabs.BaseTabWidget(parent=self) self.main_layout.addWidget(self._settings_tab) self._naming_widget = NamingWidget(project=self._project) self._project_options_widget = rigoptionsviewer.RigOptionsViewer( option_object=self._project, parent=self) self._external_code_widget = ExternalCodeDirectoryWidget(parent=self) version_control_widget = QWidget(parent=self) version_control_layout = layouts.VerticalLayout(spacing=0, margins=(2, 2, 2, 2)) version_control_widget.setLayout(version_control_layout) self._version_type_combo = combobox.BaseComboBox(parent=self) version_control_layout.addWidget(self._version_type_combo) version_control_layout.addStretch() self._settings_tab.addTab(self._project_options_widget, 'Settings') self._settings_tab.addTab(self._naming_widget, 'Nomenclature') self._settings_tab.addTab(version_control_widget, 'Version Control') self._settings_tab.addTab(self._external_code_widget, 'External Code') bottom_layout = layouts.VerticalLayout(spacing=2, margins=(2, 2, 2, 2)) bottom_layout.setAlignment(Qt.AlignBottom) self.main_layout.addLayout(bottom_layout) bottom_layout.addLayout(dividers.DividerLayout()) buttons_layout = layouts.HorizontalLayout(spacing=2, margins=(2, 2, 2, 2)) bottom_layout.addLayout(buttons_layout) ok_icon = resources.icon('ok') self._ok_btn = buttons.BaseButton(parent=self) self._ok_btn.setIcon(ok_icon) buttons_layout.addWidget(self._ok_btn)
def __init__(self, session, isolde, main_frame, category_grid, region_table, bottom_layout, update_button): super().__init__(session, isolde, main_frame, sim_sensitive=True) from Qt.QtCore import Qt self._data_role = Qt.ItemDataRole.UserRole cg = self.category_grid = category_grid rt = self.region_table = region_table rt.itemClicked.connect(self.item_clicked_cb) self.update_button = update_button update_button.clicked.connect(self.update) from .problems import ProblemAggregator pa = self.problem_aggregator = ProblemAggregator(session) from Qt.QtWidgets import QCheckBox, QLabel, QSpinBox, QDoubleSpinBox, QLabel cg.addWidget(QLabel("Unsatisfied restraints"), 0, 0) cg.addWidget(QLabel("Validation issues"), 0, 1) ocb = self.outliers_only_checkbox = QCheckBox("Outliers only") cg.addWidget(ocb, 0, 2) self.restraint_checkboxes = [] for i, name in enumerate(pa.registered_restraint_problem_types): cb = QCheckBox(name) cb.setChecked(True) self.restraint_checkboxes.append(cb) cg.addWidget(cb, i + 1, 0) self.validation_checkboxes = [] for i, name in enumerate(pa.registered_validation_problem_types): cb = QCheckBox(name) cb.setChecked(True) self.validation_checkboxes.append(cb) cg.addWidget(cb, i + 1, 1) csb = self.cutoff_spinbox = QDoubleSpinBox(main_frame) csbl = QLabel("Dist cutoff") csb.setRange(1.0, 10.0) csb.setSingleStep(1.0) csb.setValue(4.0) bottom_layout.insertWidget(0, csb) bottom_layout.insertWidget(1, csbl) clsb = self.cluster_spinbox = QSpinBox(main_frame) clsbl = QLabel("Min cluster size") clsb.setRange(2, 20) clsb.setValue(5) bottom_layout.insertWidget(2, clsb) bottom_layout.insertWidget(3, clsbl)
def _setup_login_dialog(dialog, account_input, password_input): dialog.setWindowTitle('登录CGTeamWork') account_input.setPlaceholderText('CGTeamwork账号名') password_input.setPlaceholderText('密码') password_input.setEchoMode(QLineEdit.Password) ok_button = QPushButton('登录') ok_button.setDefault(True) ok_button.clicked.connect(dialog.accept) layout = QVBoxLayout(dialog) layout.addWidget(QLabel('帐号')) layout.addWidget(account_input) layout.addWidget(QLabel('密码')) layout.addWidget(password_input) layout.addWidget(ok_button) dialog.setLayout(layout)
def __init__(self, id_, items, parent=None): super().__init__(parent) itemLabel = QLabel(self.tr("Item: ")) descriptionLabel = QLabel(self.tr("Description: ")) imageFileLabel = QLabel(self.tr("Image file: ")) self.createButtons() self.itemText = QLabel() self.descriptionEditor = QTextEdit() self.imageFileEditor = QComboBox() self.imageFileEditor.setModel(items.relationModel(1)) self.imageFileEditor.setModelColumn( items.relationModel(1).fieldIndex("file")) self.mapper = QDataWidgetMapper(self) self.mapper.setModel(items) self.mapper.setSubmitPolicy(QDataWidgetMapper.ManualSubmit) self.mapper.setItemDelegate(QSqlRelationalDelegate(self.mapper)) self.mapper.addMapping(self.imageFileEditor, 1) self.mapper.addMapping(self.itemText, 2, b"text") self.mapper.addMapping(self.descriptionEditor, 3) self.mapper.setCurrentIndex(id_) self.descriptionEditor.textChanged.connect(self.enableButtons) self.imageFileEditor.currentIndexChanged.connect(self.enableButtons) formLayout = QFormLayout() formLayout.addRow(itemLabel, self.itemText) formLayout.addRow(imageFileLabel, self.imageFileEditor) formLayout.addRow(descriptionLabel, self.descriptionEditor) layout = QVBoxLayout() layout.addLayout(formLayout) layout.addWidget(self.buttonBox) self.setLayout(layout) self.itemId = id_ self.displayedImage = self.imageFileEditor.currentText() self.setWindowFlags(Qt.Window) self.enableButtons(False) self.setWindowTitle(self.itemText.text())
class UIStreamPreviewNode(UINodeBase): def __init__(self, raw_node): super(UIStreamPreviewNode, self).__init__(raw_node) self.resizable = True self.Imagelabel = QLabel("test3") self.pixmap = QtGui.QPixmap(None) self.addWidget(self.Imagelabel) self.updateSize() def paint(self, painter, option, widget): self.updateSize() super(UIStreamPreviewNode, self).paint(painter, option, widget) def updateSize(self): self.pixmap = QtGui.QPixmap(self._rawNode.label.getData()) scaledPixmap = self.pixmap.scaledToWidth( self.customLayout.geometry().width()) self.Imagelabel.setPixmap(scaledPixmap)
class FixedAttributesWidget(QWidget): """ A widget for viewing/editing fixed attributes (non-varying) """ def __init__(self, data, parent=None): QWidget.__init__(self, parent) self.data = data vbox = QVBoxLayout() self.setLayout(vbox) title = QLabel('Fixed Attributes') vbox.addWidget(title) self.frame = QFrame() vbox.addWidget(self.frame) self.vbox = QVBoxLayout() self.frame.setLayout(self.vbox) self.frame.setFrameShape(QFrame.Panel) self.frame.setFrameShadow(QFrame.Sunken) self.table = QTableWidget() self.table.horizontalHeader().hide() self.vbox.addWidget(self.table) self.table.hide() self.noAttrLabel = QLabel('<i>No fixed attributes</i>') self.vbox.addWidget(self.noAttrLabel) self.widgets = [] self.populate() self.data.fixedAttributeAdded.connect(self.fixedAttributeAddedSlot) self.data.dataReset.connect(self.dataResetSlot) self.data.dirtied.connect(self.dataDirtiedSlot) def dataDirtiedSlot(self, dirty): """ SLOT when the particle data is dirtied or cleaned.""" if not dirty: for widget in self.widgets: widget.drawBorder(False) def dataResetSlot(self): """ SLOT when particle data is reconstructed """ self.populate() def fixedAttributeAddedSlot(self, name): #pylint:disable=W0613 """ SLOT when a fixed attribute is added to the particle set """ self.populate() def populate(self): """ Populates the table of fixed attributes """ self.widgets = [] # If no widgets, just drop that in numAttrs = self.data.numFixedAttributes() if not numAttrs: self.table.hide() self.noAttrLabel.show() return self.table.show() self.noAttrLabel.hide() self.table.setColumnCount(1) self.table.setRowCount(numAttrs) self.attrs = getAttrs(self.data.numFixedAttributes, self.data.fixedAttributeInfo, True) for row, (_, attr) in enumerate(self.attrs): item = QTableWidgetItem(attr.name) tooltip = '<p><tt> Name: {}<br> Type: {}<br>Count: {}</tt></p>'.\ format(attr.name, partio.TypeName(attr.type), attr.count) item.setToolTip(tooltip) self.table.setVerticalHeaderItem(row, item) value = self.data.getFixed(attr) widget = getWidget(value, self.data, attr) self.table.setCellWidget(row, 0, widget) self.widgets.append(widget) self.table.horizontalHeader().setStretchLastSection(False) self.table.setTabKeyNavigation(True) self.table.horizontalHeader().setSectionsMovable(False) self.table.horizontalHeader().resizeSections(QHeaderView.ResizeToContents) self.table.verticalHeader().resizeSections(QHeaderView.ResizeToContents)
def __init__(self, U, plot, length=1, title=None): super().__init__() layout = QVBoxLayout() if title: title = QLabel('<b>' + title + '</b>') title.setAlignment(Qt.AlignHCenter) layout.addWidget(title) layout.addWidget(plot) plot.set(U, 0) if length > 1: hlayout = QHBoxLayout() self.slider = QSlider(Qt.Horizontal) self.slider.setMinimum(0) self.slider.setMaximum(length - 1) self.slider.setTickPosition(QSlider.TicksBelow) hlayout.addWidget(self.slider) lcd = QLCDNumber(m.ceil(m.log10(length))) lcd.setDecMode() lcd.setSegmentStyle(QLCDNumber.Flat) hlayout.addWidget(lcd) layout.addLayout(hlayout) hlayout = QHBoxLayout() toolbar = QToolBar() self.a_play = QAction(self.style().standardIcon(QStyle.SP_MediaPlay), 'Play', self) self.a_play.setCheckable(True) self.a_rewind = QAction(self.style().standardIcon(QStyle.SP_MediaSeekBackward), 'Rewind', self) self.a_toend = QAction(self.style().standardIcon(QStyle.SP_MediaSeekForward), 'End', self) self.a_step_backward = QAction(self.style().standardIcon(QStyle.SP_MediaSkipBackward), 'Step Back', self) self.a_step_forward = QAction(self.style().standardIcon(QStyle.SP_MediaSkipForward), 'Step', self) self.a_loop = QAction(self.style().standardIcon(QStyle.SP_BrowserReload), 'Loop', self) self.a_loop.setCheckable(True) toolbar.addAction(self.a_play) toolbar.addAction(self.a_rewind) toolbar.addAction(self.a_toend) toolbar.addAction(self.a_step_backward) toolbar.addAction(self.a_step_forward) toolbar.addAction(self.a_loop) if hasattr(self, 'save'): self.a_save = QAction(self.style().standardIcon(QStyle.SP_DialogSaveButton), 'Save', self) toolbar.addAction(self.a_save) self.a_save.triggered.connect(self.save) hlayout.addWidget(toolbar) self.speed = QSlider(Qt.Horizontal) self.speed.setMinimum(0) self.speed.setMaximum(100) hlayout.addWidget(QLabel('Speed:')) hlayout.addWidget(self.speed) layout.addLayout(hlayout) self.timer = QTimer() self.timer.timeout.connect(self.update_solution) self.slider.valueChanged.connect(self.slider_changed) self.slider.valueChanged.connect(lcd.display) self.speed.valueChanged.connect(self.speed_changed) self.a_play.toggled.connect(self.toggle_play) self.a_rewind.triggered.connect(self.rewind) self.a_toend.triggered.connect(self.to_end) self.a_step_forward.triggered.connect(self.step_forward) self.a_step_backward.triggered.connect(self.step_backward) self.speed.setValue(50) elif hasattr(self, 'save'): hlayout = QHBoxLayout() toolbar = QToolBar() self.a_save = QAction(self.style().standardIcon(QStyle.SP_DialogSaveButton), 'Save', self) toolbar.addAction(self.a_save) hlayout.addWidget(toolbar) layout.addLayout(hlayout) self.a_save.triggered.connect(self.save) self.setLayout(layout) self.plot = plot self.U = U self.length = length
class IndexedStringsWidget(QWidget): """ Holds the list of indexed string attributes """ def __init__(self, data, parent=None): QWidget.__init__(self, parent) self.data = data vbox = QVBoxLayout() self.setLayout(vbox) title = QLabel('Indexed Strings') vbox.addWidget(title) self.frame = QFrame() vbox.addWidget(self.frame) self.vbox = QVBoxLayout() self.frame.setLayout(self.vbox) self.frame.setFrameShape(QFrame.Panel) self.frame.setFrameShadow(QFrame.Sunken) self.table = QTableWidget() self.table.horizontalHeader().hide() self.vbox.addWidget(self.table) self.table.hide() self.noStringsLabel = QLabel('<i>No indexed strings</i>') self.vbox.addWidget(self.noStringsLabel) self.widgets = [] self.populate() self.data.attributeAdded.connect(self.attributeAddedSlot) self.data.dataReset.connect(self.dataResetSlot) self.data.dirtied.connect(self.dataDirtiedSlot) def dataDirtiedSlot(self, dirty): """ SLOT when the particle data is dirtied or cleaned.""" if not dirty: for widget in self.widgets: widget.drawBorder(False) def dataResetSlot(self): """ SLOT when particle data is reconstructed """ self.populate() def attributeAddedSlot(self, name): #pylint:disable=W0613 """ SLOT when an attribute is added to the particle set """ attr = self.data.attributeInfo(name) if attr.type == partio.INDEXEDSTR: self.populate() def populate(self): """ Populates the table of indexed strings """ self.widgets = [] # If no widgets, just drop that in attrs = [] for anum in range(self.data.numAttributes()): attr = self.data.attributeInfo(anum) if attr.type == partio.INDEXEDSTR: attrs.append(attr) if not attrs: self.table.hide() self.noStringsLabel.show() return self.table.show() self.noStringsLabel.hide() self.table.setColumnCount(1) self.table.setRowCount(len(attrs)) for row, attr in enumerate(attrs): item = QTableWidgetItem(attr.name) self.table.setVerticalHeaderItem(row, item) strings = self.data.indexedStrs(attr) table = QTableWidget() table.setColumnCount(1) table.setRowCount(len(strings)) table.horizontalHeader().hide() table.setVerticalHeaderLabels([str(i) for i in range(len(strings))]) for i, string in enumerate(strings): widget = QLabel(string) table.setCellWidget(i, 0, widget) self.widgets.append(widget) self.table.setCellWidget(row, 0, table) self.table.horizontalHeader().setStretchLastSection(False) self.table.setTabKeyNavigation(True) self.table.horizontalHeader().setSectionsMovable(False) self.table.horizontalHeader().resizeSections(QHeaderView.ResizeToContents) self.table.verticalHeader().resizeSections(QHeaderView.ResizeToContents)