Я бы предложил использовать QGridLayout
в центральном виджете вашего главного окна. Я использовал два QSpacerItems, чтобы держать виджеты по центру между надписью заголовка и нижней частью. Кстати, таблица стилей QWidget {background-color: white;}
будет применяться ко всему, что унаследовано от QWidget, включая все кнопки и метки, даже если вы этого не хотите.
class MyWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Public Transport Application")
self.setGeometry(200, 200, 800, 500)
self.setWindowIcon(QIcon('Icon.jpg'))
self.showMaximized()
self.welcomePage()
def welcomePage(self):
centralWidget = QtWidgets.QWidget()
self.setCentralWidget(centralWidget)
grid = QtWidgets.QGridLayout(centralWidget)
grid.setVerticalSpacing(40) # Vertical space between widgets
title = QtWidgets.QLabel('Welcome to the Queensland Transport Application')
title.setObjectName('titleOfPage')
title.setAlignment(Qt.AlignCenter)
title.setFixedHeight(100)
grid.addWidget(title, 0, 0, 1, 2)
grid.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Expanding), 1, 0, 1, 2)
grid.addWidget(QLabel('Text'), 2, 0, Qt.AlignHCenter)
grid.addWidget(QPushButton('Button 1'), 3, 0, Qt.AlignHCenter)
grid.addWidget(QPushButton('Button 2'), 4, 0, Qt.AlignHCenter)
grid.addWidget(QPushButton('Button 3'), 5, 0, Qt.AlignHCenter)
grid.addWidget(QPushButton('Button'), 2, 1, 4, 1, Qt.AlignHCenter)
grid.addItem(QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Expanding), 6, 0, 1, 2)