LINUX.ORG.RU

Как правильно разместить кнопки в QGridLayout?

 , , ,


0

1

Приветствую. Пишу небольшое приложение, и уже на этапе создания интерфейса дико затупил. В общем, в окне нужно разместить 7 кнопок, один чекбокс и логотип. Для кнопок использую QGridLayout. Все вроде бы работает, но кнопки размещаются по всей площади окна, а мне нужно сдвинуть их вниз, чтобы занимали только нижнюю половину окна. А в верхней будет логотип. Объясните, пожалуйста, как это сделать? Вот код:

import sys

from PySide2.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QGroupBox, QGridLayout, QLabel
from PySide2.QtGui import QPixmap
from PySide2.QtCore import QRect, Qt

class Window1(QWidget):
    def __init__(self):
        super().__init__()
        self.setFixedSize(640, 400)
        self.createGridLayout()
        vbox = QVBoxLayout()
        vbox.addWidget(self.groupBox)
        self.setLayout(vbox)

        self.show()

    def createGridLayout(self):
        self.groupBox = QGroupBox("Welcome to Ubuntu Sway Remix!")
        gridLayout = QGridLayout()


        button1 = QPushButton("Website", self)
        button2 = QPushButton("Wiki", self)
        button3 = QPushButton("Issue Tracker", self)
        button4 = QPushButton("Contribute", self)
        button5 = QPushButton("Matrix Chat", self)
        button6 = QPushButton("Next >>", self)
        button7 = QPushButton("Exit", self)

        gridLayout.addWidget(button1, 0, 0, 1, 1)
        gridLayout.addWidget(button2, 0, 1, 1, 1)
        gridLayout.addWidget(button3, 0, 2, 1, 1)
        gridLayout.addWidget(button4, 1, 0, 1, 1)
        gridLayout.addWidget(button5, 1, 1, 1, 1)
        gridLayout.addWidget(button6, 1, 2, 1, 1)
        gridLayout.addWidget(button7, 2, 1, 1, 1)

        self.groupBox.setLayout(gridLayout)

if __name__ == "__main__":
    app = QApplication([])
    widget = Window1()
    widget.show()
    sys.exit(app.exec_())

Ответ на: комментарий от Sunderland93

Ну сделай так тогда:

--- qt_test.py.old      2022-07-14 11:08:30.928657992 +0300
+++ qt_test.py  2022-07-14 11:36:53.295683214 +0300
@@ -36,7 +36,10 @@
         gridLayout.addWidget(button6, 1, 2, 1, 1)
         gridLayout.addWidget(button7, 2, 1, 1, 1)
 
-        self.groupBox.setLayout(gridLayout)
+        vbox = QVBoxLayout()
+        vbox.addWidget(QWidget())
+        vbox.addLayout(gridLayout)
+        self.groupBox.setLayout(vbox)
 
 if __name__ == "__main__":
     app = QApplication([])
Ja-Ja-Hey-Ho ★★★★
()

Объясните мне зачем нужно рисовать gui в коде, когда для этого есть QtDesigner? Я понял бы, если бы виджеты динамически добавлялись в зависимости от каких-то условий, но тут-то зачем?

asaks
()