Untitled

 avatar
unknown
plain_text
13 days ago
9.9 kB
3
Indexable
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QFontDatabase, QIcon, QPixmap, QPalette, QBrush
from PyQt5.QtCore import Qt
from background_window import Background
from functions import Function
from config import Config, change_screen_resolution
from camera_prediction import EmotionRecognizer
from tutorial_window import TutorialWindow
from tcwindow import TCWindow

class ColorManager:
    @classmethod
    def set_color(cls, color):
        Config.set_color(color)

class UiMainWindow(object):
    def __init__(self):
        self.background = Background()
        change_screen_resolution(1280, 720)

        font_id = QFontDatabase.addApplicationFont("Fonts/SmileFont.ttf")
        if font_id != -1:
            self.font_family = QFontDatabase.applicationFontFamilies(font_id)[0]  # Get the font family name
        else:
            self.font_family = "Arial"  # Fallback font

        self.emotion_recognition = EmotionRecognizer()

    def log_in_member(self):
        from predict_emotion_window import PredictEmotionWindow
        self.window = QtWidgets.QMainWindow()
        self.ui = PredictEmotionWindow()
        self.ui.setup_ui(self.window)
        self.window.show()

    def how_to_use(self):
        self.window = QtWidgets.QMainWindow()
        self.ui = TutorialWindow()
        self.ui.setup_ui(self.window)
        self.window.show()

    def terms_conditions(self):
        self.window = QtWidgets.QMainWindow()
        self.ui = TCWindow()
        self.ui.setup_ui(self.window)
        self.window.show()

    def select_gender(self, gender):
        if gender == "male":
            palette = self.centralwidget.palette()
            palette.setBrush(QPalette.Window, QBrush(QtGui.QColor('#bfe5ef')))
            self.centralwidget.setPalette(palette)
            self.maleButton.setStyleSheet("""
                QPushButton {
                    background-color: #1893f8;
                    border: 3px solid #462f48;
                    image: url('Assets/male_icon.png');
                }
            """)
            self.femaleButton.setStyleSheet("""
                QPushButton {
                    background-color: #bfe5ef;
                    image: url('Assets/female_icon.png');
                }
            """)
            ColorManager.set_color("#bfe5ef")
        else:
            palette = self.centralwidget.palette()
            palette.setBrush(QPalette.Window, QBrush(QtGui.QColor('#FFB6C1')))
            self.centralwidget.setPalette(palette)
            self.femaleButton.setStyleSheet("""
                QPushButton {
                    background-color: #fa4dc8;
                    border: 3px solid #462f48;
                    image: url('Assets/female_icon.png');
                }
            """)
            self.maleButton.setStyleSheet("""
                QPushButton {
                    background-color: #ffc4d4;
                    image: url('Assets/male_icon.png');
                }
            """)
            ColorManager.set_color("#FFB6C1")

    def setup_ui(self, MainWindow):
        MainWindow.setObjectName("main_window")
        MainWindow.showFullScreen()
        MainWindow.setWindowFlags(QtCore.Qt.FramelessWindowHint)

        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")

        # Set initial background color
        palette = self.centralwidget.palette()
        palette.setBrush(QPalette.Window, QBrush(QtGui.QColor('#bfe5ef')))
        self.centralwidget.setAutoFillBackground(True)
        self.centralwidget.setPalette(palette)

        # Add background image with opacity
        background = QtGui.QPixmap('Assets/clouds.png')
        self.background_label = QtWidgets.QLabel(self.centralwidget)
        self.background_label.setPixmap(background.scaled(
            MainWindow.size(),
            QtCore.Qt.KeepAspectRatio,
            QtCore.Qt.SmoothTransformation
        ))
        self.background_label.setStyleSheet('background-color: transparent;')
        self.background_label.lower()  # Put behind other widgets

        opacity_effect = QtWidgets.QGraphicsOpacityEffect()
        opacity_effect.setOpacity(0.7)
        self.background_label.setGraphicsEffect(opacity_effect)

        # Resize background image with window size change
        def resizeEvent(event):
            super(MainWindow.__class__, self).resizeEvent(event)
            self.background_label.setPixmap(background.scaled(
                MainWindow.size(),
                QtCore.Qt.KeepAspectRatioByProportion,
                QtCore.Qt.SmoothTransformation
            ))
            self.background_label.setGeometry(0, 0, MainWindow.width(), MainWindow.height())

        MainWindow.resizeEvent = resizeEvent

        # Add UI elements
        square_blue = Function.label(self.centralwidget, "square_orange", (465, 110, 323, 170), 70, None,
                                     self.font_family, "", "#E0E0E0", False, back_color='#0c6980')
        square_blue.setAlignment(QtCore.Qt.AlignCenter)

        square_orange = Function.label(self.centralwidget, "square_orange", (480, 125, 323, 170), 70, None,
                                       self.font_family, "", "#E0E0E0", False, back_color='#f58220')
        square_orange.setAlignment(QtCore.Qt.AlignCenter)

        application_name = Function.label(self.centralwidget, "application_name", (480, 105, 323, 156), 68, None, self.font_family,
                                         "EmotiCom", "#E0E0E0", False, back_color='None')
        application_name.setAlignment(QtCore.Qt.AlignCenter)

        application_slogan = Function.label(self.centralwidget, "application_slogan", (480, 210, 323, 50), 23, None, self.font_family,
                                           '"Connect, Express, Thrive!"', "#E0E0E0", False, back_color='None')
        application_slogan.setAlignment(QtCore.Qt.AlignCenter)

        self.terms = Function.push_button(self.centralwidget, "terms", (520, 300, 250, 50), 23, None, self.font_family,
                                          "Terms and Conditions", "#000000", False, back_color=None)
        self.terms.setStyleSheet(f"""
                    #terms {{
                        font-size: 23px;
                        font-weight: None;
                        font-family: {self.font_family}, sans-serif;
                        color: #000000;
                        background: transparent;
                        text-decoration: underline;
                    }}
                """)
        self.terms.clicked.connect(self.terms_conditions)

        self.tutorial = Function.push_button(self.centralwidget, "tutorial", (530, 340, 220, 50), 23, None, self.font_family,
                                             "How to use?", "#000000", False, back_color=None)
        self.tutorial.setStyleSheet(f"""
                    #tutorial {{
                        font-size: 23px;
                        font-weight: None;
                        font-family: {self.font_family}, sans-serif;
                        color: #000000;
                        background: transparent;
                        text-decoration: underline;
                    }}
                """)
        self.tutorial.clicked.connect(self.how_to_use)

        # Male Button
        self.maleButton = QtWidgets.QPushButton(self.centralwidget)
        self.maleButton.setGeometry(QtCore.QRect(580, 450, 50, 50))
        self.maleButton.setStyleSheet("""
            QPushButton {
                background-color: #1893f8;
                border: 3px solid #462f48;
                image: url('Assets/male_icon.png');
            }
        """)
        self.maleButton.setObjectName("maleButton")
        self.maleButton.setIcon(QIcon(QPixmap("Assets/male.png")))
        self.maleButton.setIconSize(QtCore.QSize(40, 40))
        self.maleButton.clicked.connect(lambda: self.select_gender("male"))

        # Female Button
        self.femaleButton = QtWidgets.QPushButton(self.centralwidget)
        self.femaleButton.setGeometry(QtCore.QRect(650, 450, 50, 50))
        self.femaleButton.setStyleSheet("""
            QPushButton {
                background-color: #bfe5ef;
                image: url('Assets/female_icon.png');
            }
        """)
        self.femaleButton.setObjectName("femaleButton")
        self.femaleButton.setIcon(QIcon(QPixmap("Assets/female.png")))
        self.femaleButton.setIconSize(QtCore.QSize(40, 40))
        self.femaleButton.clicked.connect(lambda: self.select_gender("female"))

        # Start Button
        self.startButton = QtWidgets.QPushButton(self.centralwidget)
        self.startButton.setGeometry(QtCore.QRect(478, 571, 323, 70))
        self.startButton.setStyleSheet(f"""#startButton {{
            font-size: 24px;
            font-family: {self.font_family};
            color: black;
            border-radius: 20px;
            background-color: #f85646;
            text-align: top;
        }}""")
        self.startButton.setObjectName("startButton")
        self.startButton.clicked.connect(self.log_in_member)
        self.startButton.clicked.connect(MainWindow.close)

        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslate_ui(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslate_ui(self, MainWindow):
        MainWindow.setWindowTitle("EmotiCom")
        self.startButton.setText("Start Now!")

if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = UiMainWindow()
    ui.setup_ui(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())
Editor is loading...
Leave a Comment