Untitled
unknown
plain_text
9 months ago
9.9 kB
6
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