Как расположить кнопки так, чтобы они находились в определенной части окна?

#python #button #pyqt5

#python #кнопка #pyqt5

Вопрос:

В этом коде я расположил четыре кнопки в QVBoxLayout , и в результате на картинке кнопки покрывали все окно. Я также создал другое окно, но оно было в QtDesigner , и этот дизайн не охватывает весь экран. Вместо этого он размещает кнопки в определенной части экрана. Вот картинка. Как написать код кнопок, чтобы они находились в определенной части окна?

 class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setGeometry(200, 200, 400, 300)
        self.setWindowTitle("PyQt5 QVBoxLayout")
        self.setWindowIcon(QIcon("picture.png"))

        vbox = QVBoxLayout()
        b1 = QPushButton("First")
        b2 = QPushButton("Second")
        b3 = QPushButton("Third")
        b4 = QPushButton("Fourth")

        vbox.addWidget(b1)
        vbox.addWidget(b2)
        vbox.addWidget(b3)
        vbox.addWidget(b4)
        self.setLayout(vbox)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_()) 
 

Комментарии:

1. Правильный вопрос: что вы собираетесь делать с другой частью окна? Макеты существуют по определенным причинам: самое главное, они позволяют объектам адаптировать свой размер в зависимости от их требований и доступного пространства, а также гарантируют, что всегда соблюдается минимальный требуемый размер. Использование фиксированной геометрии считается плохой практикой , но есть случаи, для которых предпочтительно (или требуется) некоторое пустое пространство.

2. Мне нужна другая часть для текстовой метки, флажка и т.д.

3. Макеты уже позаботятся обо всем, как только объекты будут вставлены. Я предлагаю вам попробовать использовать их и понять, как они работают. Подробнее об использовании макетов в designer . Если вам нужен какой-то «заполнитель» для виджетов, которые будут динамически создаваться позже, рассмотрите простой пустой QWidget.