示例#1
0
def clearLayout(layout: QLayout) -> None:
    """Used to remove widgets from various layouts"""
    if layout.count():
        while (item := layout.takeAt(0)) is not None:
            layout.removeItem(item)
            item.widget().hide()
            item.widget().deleteLater()
    def makeLabelIn(parent: QtWidgets.QLayout, text,
                    alignFlag: QtCore.Qt.AlignmentFlag):
        label = QtWidgets.QLabel(text)
        label.setAlignment(alignFlag)
        parent.addWidget(label)

        return label
示例#3
0
def add_layout_items(layout: QLayout, items: Iterable[Union[QWidget,
                                                            QLayout]]):
    for item in items:
        if isinstance(item, QWidget):
            layout.addWidget(item)
        else:
            layout.addLayout(item)
示例#4
0
    def metadata_window_cursor_layout(self, layout: QtWidgets.QLayout,
                                      cursor: QtGui.QCursor) -> None:
        try:
            if layout is None:
                return
            r = []
            i = layout.count()
            while i > 0:
                i -= 1
                r.append(i)

            for i in r:
                child = layout.itemAt(i)
                # print(child)
                if isinstance(child, QtWidgets.QWidgetItem):
                    try:
                        if isinstance(child.widget(), QtWidgets.QPushButton):
                            if child.widget().objectName(
                            ) == 'label_cover_view':
                                continue
                            child.widget().setCursor(cursor)
                    except Exception:
                        traceback.print_exc()
                elif isinstance(child, QtWidgets.QSpacerItem):
                    ''
                elif isinstance(
                        child, (QtWidgets.QLayoutItem, QtWidgets.QHBoxLayout,
                                QtWidgets.QVBoxLayout, QtWidgets.QGridLayout)):
                    self.metadata_window_cursor_layout(child, cursor)
                del child
        except Exception:
            traceback.print_exc()
示例#5
0
文件: config.py 项目: wongselent/wml
def append_widget(
        layout: QtWidgets.QLayout,
        widgets: Tuple[QtWidgets.QWidget] = None) -> Tuple[QtWidgets.QWidget]:
    for widget in widgets:
        layout.addWidget(widget)

    return widgets
示例#6
0
def clearLayout(layout: QtWidgets.QLayout) -> None:
    while layout.count() > 0:
        item = layout.takeAt(0)
        if item.layout():
            clearLayout(item.layout())
        if item.widget():
            item.widget().setParent(None)
示例#7
0
 def custom_colors(self, layout: QtWidgets.QLayout):
     for setting, name, attr in (
         ('BackgroundColor', 'Chart background', 'background'),
         ('ForegroundColor', 'Chart foreground', 'foreground'),
         ('TextColor', 'Chart text', 'text'),
     ):
         cp = self.color_picker(setting, attr)
         layout.addRow(name, cp)
示例#8
0
def create_collapsible_box_add_to_parent_layout(
        title: str,
        parent_layout: QLayout,
        title_backgroup_color="") -> CollapsibleBox:
    collapsible_box = CollapsibleBox(
        title, title_backgroup_color=title_backgroup_color)
    parent_layout.addWidget(collapsible_box)

    return collapsible_box
示例#9
0
    def __init__(self, parent=None, margin=-1, h_spacing=-1, v_spacing=-1):
        QLayout.__init__(self, parent)

        self._h_space = h_spacing
        self._v_space = v_spacing

        self._item_list = []

        self.setContentsMargins(margin, margin, margin, margin)
示例#10
0
def clearLayout(layout: QtWidgets.QLayout):
    if layout is None:
        return
    for i in reversed(range(layout.count())):
        item = layout.takeAt(i)
        if item.widget() is not None:
            item.widget().deleteLater()
        else:
            clearLayout(item.layout())
示例#11
0
def add_widget_to_layout(widget: QWidget, layout: QLayout, name: str) -> None:
    """Adds a widget that belongs to a spacific layout

    :param widget: The widget being inserted
    :param layout: Layout to which widget is inserted
    :param name: Name of widget
    :return: None
    """
    widget.setObjectName(name)
    layout.addWidget(widget)
示例#12
0
def get_layout_widgets(layout: QLayout) -> Iterator[QWidget]:
    for i in range(layout.count()):
        item = layout.itemAt(i)
        sub_layout = item.layout()
        if sub_layout:
            yield from get_layout_widgets(sub_layout)
        else:
            widget = item.widget()
            if widget:
                yield widget
示例#13
0
def clear_layout(layout: QLayout) -> None:
    if layout is None:
        return
    while layout.count():
        item = layout.takeAt(0)
        widget = item.widget()
        if widget is not None:
            widget.deleteLater()
        else:
            clear_layout(item.layout())
示例#14
0
 def trace_colors(self, layout: QtWidgets.QLayout):
     for setting, name, attr in (
         ('SweepColor', 'Sweep color', 'sweep'),
         ('SecondarySweepColor', 'Second sweep color', 'sweep_secondary'),
         ('ReferenceColor', 'Reference color', 'reference'),
         ('SecondaryReferenceColor', 'Second reference color',
          'reference_secondary'),
     ):
         cp = self.color_picker(setting, attr)
         layout.addRow(name, cp)
示例#15
0
def clear_layout(layout: QLayout) -> None:
    """Clear the layout off all its components"""
    if layout is not None:
        while layout.count():
            item = layout.takeAt(0)
            widget = item.widget()
            if widget is not None:
                widget.deleteLater()
            else:
                clear_layout(item.layout())
示例#16
0
def remove_widget_from_layout(layout: QLayout, widget: QWidget):
    """
    Remove widget from a layout.

    :param layout:
    :param widget:
    :return:
    """
    layout.removeWidget(widget)
    widget.deleteLater()
示例#17
0
def clear_layout(layout: QLayout):
    item = layout.takeAt(0)
    while item:
        w = item.widget()
        l = item.layout()
        if w:
            w.setParent(None)
        if l:
            clear_layout(l)
            l.setParent(None)
        item = layout.takeAt(0)
示例#18
0
 def setGeometry(self, r):
     QLayout.setGeometry(self, r)
     new_height = self._layoutChildren(r)
     if new_height != self._min_h:
         self._updateMinimumSize(new_height)
         i = 0
         wid = self.parentWidget()
         while wid is not None:
             wid.updateGeometry()
             wid = wid.parentWidget()
             i += 1
示例#19
0
 def setGeometry(self, r):
     QLayout.setGeometry(self, r)
     new_height = self._layoutChildren(r)
     if new_height != self._min_h:
         self._updateMinimumSize(new_height)
         i = 0
         wid = self.parentWidget()
         while wid is not None:
             wid.updateGeometry()
             wid = wid.parentWidget()
             i += 1
示例#20
0
def delete_children(layout: QtWidgets.QLayout) -> None:
    """Delete all child layouts and widgets of a layout.
    
    This must be done before removing this layout from its parent.
    """
    while layout.count() > 0:
        child = layout.takeAt(0)
        if child.widget() is not None:
            child.widget().deleteLater()
        elif child.layout() is not None:
            delete_children(child.layout())
示例#21
0
 def __init__(self, pane_selectors_layout: QLayout,
              panes_layout: QStackedLayout, pane: QWidget, *args, **kwargs):
     super().__init__(*args, **kwargs)
     self.setProperty('pane-selector', 'true')
     self.setFlat(panes_layout.currentWidget() != pane)
     self.setCursor(Qt.PointingHandCursor)
     self.released.connect(lambda: [
         pane_selectors_layout.itemAt(i).widget().setFlat(True)
         for i in range(0, pane_selectors_layout.count())
     ])
     self.released.connect(lambda: self.setFlat(False))
     self.released.connect(lambda: panes_layout.setCurrentWidget(pane))
示例#22
0
文件: egrid.py 项目: voloyev/webmacs
 def __init__(self, window=None):
     QLayout.__init__(self)
     self._window = window
     main_view = WebView(window)
     # keep an ordered list of the widgets
     self._views = []
     self._current_view = main_view
     # to avoid asking reordering many times
     self.__view_sort_asked = False
     self._item_added = None
     self._root = LayoutEntry()
     self.add_view(main_view, self._root)
示例#23
0
def add_button(parent: QLayout, title: str, on_click, cls: str=None, mtd: str=None, width: int=30, height: int=None) -> QPushButton:
    tr = QPushButton(title)
    tr.setFixedHeight(width)
    if height is not None:
        tr.setFixedHeight(height)
    tr.clicked.connect(on_click)
    parent.addWidget(tr)
    if cls is not None and mtd is not None:
        if not Auth.get_access(cls, mtd):
            tr.setEnabled(False)
            tr.setStyleSheet("background-color: grey;")
    return tr
示例#24
0
    def setJSONKwargs(self, setFunction, layout:QtWidgets.QLayout, allowedtype:type):
        """ Used to convert each row to a settings.Test row

        Args:
            setFunction (method): The function belonging to each type in the layout
            layout (QtWidgets.QLayout): the layout to parse through
            allowedtype (type): The type of Widget with the layout 
        """
        items = [layout.itemAt(i).widget() for i in range(layout.count()) ]
        for item in items: 
            if not issubclass(type(item),Row): continue
            setFunction(**item.getKwargs())
        return
示例#25
0
    def metadata_window_clear_layout(self, layout: QtWidgets.QLayout) -> None:
        if layout is None:
            return
        r = []
        i = layout.count()
        while i > 0:
            i -= 1
            r.append(i)

        for i in r:
            child = layout.itemAt(i)
            # print(child)
            if isinstance(child, QtWidgets.QWidgetItem):
                try:
                    child.widget().setVisible(False)
                    layout.removeWidget(child.widget())
                    # child.widget().deleteLater()
                except Exception:
                    traceback.print_exc()
            elif isinstance(child, QtWidgets.QSpacerItem):
                layout.removeItem(child)
            elif isinstance(child,
                            (QtWidgets.QLayoutItem, QtWidgets.QHBoxLayout)):
                self.metadata_window_clear_layout(child)
                layout.removeItem(child)
            del child
示例#26
0
    def create_loss_inputs(self, tab: QTabWidget, innerLayout: QLayout):
        """
        Creates inputs for loss settings in GUI.
        :param tab: Tab to create inputs for - simulation, live, or backtest.
        :param innerLayout: Inner layout to place input widgets on.
        """
        self.lossDict[tab, "lossType"] = lossTypeComboBox = QComboBox()
        self.lossDict[tab,
                      "lossPercentage"] = lossPercentage = QDoubleSpinBox()
        self.lossDict[
            tab, "smartStopLossCounter"] = smartStopLossCounter = QSpinBox()

        lossTypeComboBox.addItems(("Trailing", "Stop"))
        lossPercentage.setValue(5)

        innerLayout.addRow(QLabel("Loss Type"), lossTypeComboBox)
        innerLayout.addRow(QLabel("Loss Percentage"), lossPercentage)
        innerLayout.addRow(QLabel("Smart Stop Loss Counter"),
                           smartStopLossCounter)

        if tab != self.backtestConfigurationTabWidget:
            self.lossDict[tab, "safetyTimer"] = safetyTimer = QSpinBox()
            safetyTimer.valueChanged.connect(
                lambda: self.update_loss_settings(tab))
            innerLayout.addRow(QLabel("Safety Timer"), safetyTimer)

        lossTypeComboBox.currentIndexChanged.connect(
            lambda: self.update_loss_settings(tab))
        lossPercentage.valueChanged.connect(
            lambda: self.update_loss_settings(tab))
        smartStopLossCounter.valueChanged.connect(
            lambda: self.update_loss_settings(tab))
示例#27
0
文件: SettingsTab.py 项目: ChMcg/MBKS
 def add_create_section(self, layout: QtWidgets.QLayout):
     self._w_create_gb = QtWidgets.QGroupBox("Create", self)
     create_gb_layout = QtWidgets.QHBoxLayout(self._w_create_gb)
     self._w_create_gb.setLayout(create_gb_layout)
     self._cbb_create_user = QtWidgets.QComboBox(self)
     self._cbb_create_user.setEditable(True)
     self._cbb_create_user.setMinimumWidth(150)
     create_gb_layout.addWidget(self._cbb_create_user)
     self._le_create_chars = QtWidgets.QLineEdit(self)
     create_gb_layout.addWidget(self._le_create_chars)
     self._pb_create = QtWidgets.QPushButton("Добавить", self)
     create_gb_layout.addWidget(self._pb_create)
     layout.addWidget(self._w_create_gb)
     self._pb_create.clicked.connect(self.handle_create)
示例#28
0
    def _init_stats(self, layout: qtw.QLayout) -> None:

        # histograms

        self._qw_hist = self._add_widget(layout,
                                         BarGraph(*self._init_histogram()))

        self._qw_hist_cum = self._add_widget(
            layout, BarGraph(*self._init_histogram(cum=True)))

        # text stats

        layout.addLayout(self._init_text_stats())
        self._update_text_stats()
示例#29
0
    def create_take_profit_inputs(self, tab: QTabWidget, innerLayout: QLayout, isOptimizer: bool = False):
        """
        Creates inputs for take profit settings in GUI.
        :param tab: Tab to create inputs for - simulation, live, or backtest.
        :param innerLayout: Inner layout to place input widgets on.
        :param isOptimizer: Boolean for whether optimizer method called this function.
        """
        if isOptimizer:
            self.takeProfitDict['optimizerTypes'] = []
            innerLayout.addRow(QLabel("Take Profit Types"))
            for takeProfitType in self.takeProfitTypes:
                checkbox = QCheckBox(f'Enable {takeProfitType} take profit?')
                innerLayout.addRow(checkbox)
                self.takeProfitDict['optimizerTypes'].append((takeProfitType, checkbox))

            for optimizerType in self.takeProfitOptimizerTypes:
                self.takeProfitDict[optimizerType, 'start'] = start = get_default_widget(QSpinBox, 1, 0)
                self.takeProfitDict[optimizerType, 'end'] = end = get_default_widget(QSpinBox, 1, 0)
                self.takeProfitDict[optimizerType, 'step'] = step = get_default_widget(QSpinBox, 1)
                add_start_end_step_to_layout(innerLayout, optimizerType, start, end, step)
        else:
            self.takeProfitDict[tab, 'takeProfitType'] = takeProfitTypeComboBox = QComboBox()
            self.takeProfitDict[tab, 'takeProfitPercentage'] = takeProfitPercentage = QDoubleSpinBox()

            takeProfitTypeComboBox.addItems(self.takeProfitTypes)
            takeProfitTypeComboBox.currentIndexChanged.connect(lambda: self.update_take_profit_settings(tab))
            takeProfitPercentage.setValue(5)
            takeProfitPercentage.valueChanged.connect(lambda: self.update_take_profit_settings(tab))

            innerLayout.addRow(QLabel("Take Profit Type"), takeProfitTypeComboBox)
            innerLayout.addRow(QLabel('Take Profit Percentage'), takeProfitPercentage)
示例#30
0
def create_collapsible_box_with_sub_form_layout_and_add_to_parent_layout(
        title: str,
        parent_layout: QLayout,
        fold: bool = True,
        title_backgroup_color="") -> Tuple[CollapsibleBox, QFormLayout]:
    collapsible_box = CollapsibleBox(
        title, title_backgroup_color=title_backgroup_color)
    parent_layout.addWidget(collapsible_box)

    form_layout = QFormLayout()
    collapsible_box.setContentLayout(form_layout)

    collapsible_box.set_fold(fold)

    return collapsible_box, form_layout
示例#31
0
文件: SettingsTab.py 项目: ChMcg/MBKS
 def add_remove_section(self, layout: QtWidgets.QLayout):
     self._w_remove_gb = QtWidgets.QGroupBox("Remove", self)
     remove_gb_layout = QtWidgets.QHBoxLayout(self._w_remove_gb)
     self._w_remove_gb.setLayout(remove_gb_layout)
     self._cbb_remove_user = QtWidgets.QComboBox(self)
     self._cbb_remove_user.setMinimumWidth(150)
     self._cbb_remove_user.setEditable(False)
     remove_gb_layout.addWidget(self._cbb_remove_user)
     self._le_remove_chars = QtWidgets.QLineEdit(self)
     remove_gb_layout.addWidget(self._le_remove_chars)
     self._pb_remove = QtWidgets.QPushButton("Удалить", self)
     remove_gb_layout.addWidget(self._pb_remove)
     layout.addWidget(self._w_remove_gb)
     self._w_remove_gb.setEnabled(False)
     self._pb_remove.clicked.connect(self.handle_remove)
示例#32
0
def remove_trailing_spacer_from_layout(layout: QLayout):
    """
    If the last item in the layout is spacer, removes it.
    :param layout: target layout
    :return: bool success indicator
    """
    ni = layout.count()
    if ni < 1:
        return False
    ni -= 1
    layout_item = layout.itemAt(ni)
    if layout_item is None:
        return False
    spacer_item = layout_item.spacerItem()
    if spacer_item is not None:
        layout.removeItem(spacer_item)
        return True
    return False
示例#33
0
 def add_buttons_to_layout(self, layout: QLayout) -> None:
     for button in self.buttons:
         layout.addWidget(button)
示例#34
0
 def __init__(self, parent=None):
     QLayout.__init__(self, parent)
     self._items = []
     self._updateMinimumSize()
示例#35
0
文件: declarative.py 项目: nycz/sapfo
def fix_layout(layout: QLayout) -> None:
    layout.setContentsMargins(0, 0, 0, 0)
    layout.setSpacing(0)