Не удается создать экран приветствия, который, но форматирование макета в настоящее время не работает - PullRequest
0 голосов
/ 21 марта 2020

В настоящее время я пытаюсь создать макет, который выглядит следующим образом:

Example of Welcome Page Layout Picture

Левая сторона перенаправит пользователя на уникальную страницу создания учетной записи. в зависимости от того, на какую кнопку они нажимали, чтобы сказать, какого они типа пользователя (каждому типу пользователя требуются разные данные). А затем, справа, я хочу, чтобы кнопка перенаправляла пользователя на страницу входа.

В полях, где я хочу разместить каждый виджет.

Любые предложения / примеры на как это сделать или поправки к следующему коду будут удивительными !!!

Мой (очень) неработающий код:

from PyQt5 import QtCore, QtGui, QtWidgets, uic
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QIcon
import sys
import os
os.environ["QT_AUTO_SCREEN_SCALE_FACTOR"] = "1"

stylesheet = """
    QWidget{
        background-color: white;
    }

    QLabel#titleOfPage{
        font: 25px;
    }

    QLabel#genText{
        font: 15px;
    }
"""
#note that the last 3 are useless currently



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):

        #this is me trying to get a title at the top of the page (doesn't work)
        titleWidget = QtWidgets.QWidget()

        title = QtWidgets.QLabel('Welcome to the Queensland Transport Application')
        title.setObjectName('titleOfPage')

        titleWidget.setFixedHeight(100)



        #This is then me trying to create all the layoute for both sides so I can start adding things to either side (note ca means create account and si means sign in)
        layoutL = QtWidgets.QVBoxLayout()
        layoutL.addWidget(titleWidget)

        layoutL.addWidget(title)

        layoutCaSi = QtWidgets.QHBoxLayout()
        self.screenLayout = QtWidgets.QStackedLayout()

        layoutL.addLayout(self.screenLayout)

        caWidget = QtWidgets.QWidget()
        caLayout = QtWidgets.QVBoxLayout()
        caLayout.addWidget(caWidget)

        siWidget = QtWidgets.QWidget()
        siLayout = QtWidgets.QVBoxLayout()
        siLayout.addWidget(siWidget)


        layoutCaSi.addLayout(caLayout)
        layoutCaSi.addLayout(siLayout)

        layoutCaSi.addLayout(self.screenLayout)

        layoutL.addLayout(layoutCaSi)

    #this will be my create account page
    def caPage(self):
        pass

    #this will be my sign in page
    def siPage(self):
        pass

def main():
    app = QtWidgets.QApplication(sys.argv)
    app.setStyleSheet(stylesheet)
    win = MyWindow()
    win.show()
    app.exec_()

main()

1 Ответ

0 голосов
/ 22 марта 2020

Я бы предложил использовать 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...