Ejemplo n.º 1
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.setObjectName("SubplotTool")
        self._widgets = {}

        layout = QtWidgets.QHBoxLayout()
        self.setLayout(layout)

        left = QtWidgets.QVBoxLayout()
        layout.addLayout(left)
        right = QtWidgets.QVBoxLayout()
        layout.addLayout(right)

        box = QtWidgets.QGroupBox("Borders")
        left.addWidget(box)
        inner = QtWidgets.QFormLayout(box)
        for side in ["top", "bottom", "left", "right"]:
            self._widgets[side] = widget = QtWidgets.QDoubleSpinBox()
            widget.setMinimum(0)
            widget.setMaximum(1)
            widget.setDecimals(3)
            widget.setSingleStep(.005)
            widget.setKeyboardTracking(False)
            inner.addRow(side, widget)
        left.addStretch(1)

        box = QtWidgets.QGroupBox("Spacings")
        right.addWidget(box)
        inner = QtWidgets.QFormLayout(box)
        for side in ["hspace", "wspace"]:
            self._widgets[side] = widget = QtWidgets.QDoubleSpinBox()
            widget.setMinimum(0)
            widget.setMaximum(1)
            widget.setDecimals(3)
            widget.setSingleStep(.005)
            widget.setKeyboardTracking(False)
            inner.addRow(side, widget)
        right.addStretch(1)

        widget = QtWidgets.QPushButton("Export values")
        self._widgets["Export values"] = widget
        # Don't trigger on <enter>, which is used to input values.
        widget.setAutoDefault(False)
        left.addWidget(widget)

        for action in ["Tight layout", "Reset", "Close"]:
            self._widgets[action] = widget = QtWidgets.QPushButton(action)
            widget.setAutoDefault(False)
            right.addWidget(widget)

        self._widgets["Close"].setFocus()
    def __init__(self, data, comment="", with_margin=False, parent=None):
        """
        Parameters
        ----------
        data : list of (label, value) pairs
            The data to be edited in the form.
        comment : str, optional

        with_margin : bool, optional, default: False
            If False, the form elements reach to the border of the widget.
            This is the desired behavior if the FormWidget is used as a widget
            alongside with other widgets such as a QComboBox, which also do
            not have a margin around them.
            However, a margin can be desired if the FormWidget is the only
            widget within a container, e.g. a tab in a QTabWidget.
        parent : QWidget or None
            The parent widget.
        """
        QtWidgets.QWidget.__init__(self, parent)
        self.data = copy.deepcopy(data)
        self.widgets = []
        self.formlayout = QtWidgets.QFormLayout(self)
        if not with_margin:
            self.formlayout.setContentsMargins(0, 0, 0, 0)
        if comment:
            self.formlayout.addRow(QtWidgets.QLabel(comment))
            self.formlayout.addRow(QtWidgets.QLabel(" "))
Ejemplo n.º 3
0
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.setObjectName("SubplotTool")
        self._widgets = {}

        main_layout = QtWidgets.QHBoxLayout()
        self.setLayout(main_layout)

        for group, spinboxes, buttons in [
            ("Borders", ["top", "bottom", "left", "right"], ["Export values"]),
            ("Spacings", ["hspace",
                          "wspace"], ["Tight layout", "Reset", "Close"]),
        ]:
            layout = QtWidgets.QVBoxLayout()
            main_layout.addLayout(layout)
            box = QtWidgets.QGroupBox(group)
            layout.addWidget(box)
            inner = QtWidgets.QFormLayout(box)
            for name in spinboxes:
                self._widgets[name] = widget = QtWidgets.QDoubleSpinBox()
                widget.setMinimum(0)
                widget.setMaximum(1)
                widget.setDecimals(3)
                widget.setSingleStep(0.005)
                widget.setKeyboardTracking(False)
                inner.addRow(name, widget)
            layout.addStretch(1)
            for name in buttons:
                self._widgets[name] = widget = QtWidgets.QPushButton(name)
                # Don't trigger on <enter>, which is used to input values.
                widget.setAutoDefault(False)
                layout.addWidget(widget)

        self._widgets["Close"].setFocus()
Ejemplo n.º 4
0
 def __init__(self, data, comment="", parent=None):
     QtWidgets.QWidget.__init__(self, parent)
     self.data = copy.deepcopy(data)
     self.widgets = []
     self.formlayout = QtWidgets.QFormLayout(self)
     if comment:
         self.formlayout.addRow(QtWidgets.QLabel(comment))
         self.formlayout.addRow(QtWidgets.QLabel(" "))
Ejemplo n.º 5
0
 def __init__(self, data, comment="", parent=None):
     QtWidgets.QWidget.__init__(self, parent)
     self.data = copy.deepcopy(data)
     self.widgets = []
     self.formlayout = QtWidgets.QFormLayout(self)
     if comment:
         self.formlayout.addRow(QtWidgets.QLabel(comment))
         self.formlayout.addRow(QtWidgets.QLabel(" "))
     if DEBUG:
         print("\n"+("*"*80))
         print("DATA:", self.data)
         print("*"*80)
         print("COMMENT:", comment)
         print("*"*80)
Ejemplo n.º 6
0
    def __init__(self, parent, item_model):
        super().__init__(parent)

        self.item_model = item_model
        self.item_model.dataChanged.connect(self.update_stats)
        self.item_model.rowsInserted.connect(self.update_stats)
        self.item_model.rowsRemoved.connect(self.update_stats)

        self.count = QtWidgets.QLabel()
        self.images_remaining = QtWidgets.QLabel()
        self.update_stats()

        self.layout = QtWidgets.QFormLayout(self)
        self.layout.addRow(QtWidgets.QLabel("Point count:"), self.count)
        self.layout.addRow(QtWidgets.QLabel("Pts. w/o an image:"),
                           self.images_remaining)
        self.setLayout(self.layout)
Ejemplo n.º 7
0
 def reshape_prompt(self):
     dialog = QtWidgets.QDialog()
     layout = QtWidgets.QFormLayout()
     layout.addRow(QtWidgets.QLabel("Choose Plot Grid Shape"))
     rowbox,colbox = QtWidgets.QLineEdit(str(self.rows)),QtWidgets.QLineEdit(str(self.cols))
     layout.addRow(QtWidgets.QLabel("Rows"),rowbox)
     layout.addRow(QtWidgets.QLabel("Cols"),colbox)
     buttons = QtWidgets.QDialogButtonBox( QtWidgets.QDialogButtonBox.Ok | QtWidgets.QDialogButtonBox.Cancel, QtCore.Qt.Horizontal, dialog)
     buttons.accepted.connect(dialog.accept)
     buttons.rejected.connect(dialog.reject)
     layout.addWidget(buttons)
     dialog.setLayout(layout)
     if dialog.exec_() == QtWidgets.QDialog.Accepted:
         try:
             r = int(rowbox.text())
             c = int(colbox.text())
             self.reshape(r,c)
         except:
             print('Invalid input to reshape dialog')