Qgridlayout контролирует размер виджета - PullRequest
1 голос
/ 17 января 2020

Я пытаюсь использовать Qgridlayout для моего GUI. I sh, чтобы уменьшить ширину Qspin, как показано на рисунке. Любые предложения, как я могу это сделать? спасибо

    layout.addWidget(checkBoxVBG,1,0)
    layout.addWidget(checkBoxIREF,2,0)


    layout.addWidget(boxVBG, 1, 1)
    layout.addWidget(boxIREF, 2, 1)


    layout.addWidget(checkBoxZERO_X,1,2)
    layout.addWidget(checkBox4MOSC,2,2)


    layout.addWidget(boxZERO_X, 1, 3)
    layout.addWidget(box4MOSC, 2, 3)

enter image description here

1 Ответ

1 голос
/ 17 января 2020

Вы можете установить фиксированную ширину и выравнивание по левому краю.

import sys

from PyQt5 import QtCore, QtGui, QtWidgets


class Widget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)

        layout = QtWidgets.QGridLayout(self)

        checkBoxVBG = QtWidgets.QCheckBox("VBG")
        checkBoxIREF = QtWidgets.QCheckBox("IREF")
        boxVBG = QtWidgets.QSpinBox()
        boxIREF = QtWidgets.QSpinBox()
        checkBoxZERO_X = QtWidgets.QCheckBox("ZERO X")
        checkBox4MOSC = QtWidgets.QCheckBox("4MOSC")
        boxZERO_X = QtWidgets.QSpinBox()
        box4MOSC = QtWidgets.QSpinBox()

        for spinbox in (boxVBG, boxIREF, boxZERO_X, box4MOSC):
            spinbox.setFixedWidth(60)

        layout.addWidget(checkBoxVBG, 1, 0)
        layout.addWidget(checkBoxIREF, 2, 0)

        layout.addWidget(boxVBG, 1, 1, alignment=QtCore.Qt.AlignLeft)
        layout.addWidget(boxIREF, 2, 1, alignment=QtCore.Qt.AlignLeft)

        layout.addWidget(checkBoxZERO_X, 1, 2)
        layout.addWidget(checkBox4MOSC, 2, 2)

        layout.addWidget(boxZERO_X, 1, 3, alignment=QtCore.Qt.AlignLeft)
        layout.addWidget(box4MOSC, 2, 3, alignment=QtCore.Qt.AlignLeft)


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())
...