Open In App
Related Articles

PyQt5 – The Color Game

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Report issue
Report

Python3

# importing libraries
from PyQt5.QtWidgets import *
from PyQt5 import QtCore, QtGui
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import random
import sys
 
 
class Window(QMainWindow):
 
    def __init__(self):
        super().__init__()
 
        # setting title
        self.setWindowTitle("Python ")
 
        # setting geometry
        self.setGeometry(100, 100, 500, 500)
 
        # calling method
        self.UiComponents()
 
        # showing all the widgets
        self.show()
 
        # counter
        self.count_value = 30
 
        # score
        self.score_value = 0
 
        # start flag
        self.start_Flag = False
 
        # list of possible colour.
        self.color_list = ['Red', 'Blue', 'Green', 'Pink', 'Black',
                   'Yellow', 'Orange', 'Purple', 'Brown']
 
 
        # method for components
    def UiComponents(self):
 
        # creating head label
        head = QLabel("Color Game", self)
 
        # setting geometry to the head
        head.setGeometry(100, 10, 300, 60)
 
        # font
        font = QFont('Times', 14)
        font.setBold(True)
        font.setItalic(True)
        font.setUnderline(True)
 
        # setting font to the head
        head.setFont(font)
 
        # setting alignment of the head
        head.setAlignment(Qt.AlignCenter)
 
        # instruction label
        instruction = QLabel("Instruction : Enter the Color not the text. "
                             "Press Start button to start the game          "
                             "Note : Time limit for game is 30 seconds", self)
 
        # making it multi line
        instruction.setWordWrap(True)
 
        # setting geometry to the label
        instruction.setGeometry(20, 60, 460, 60)
 
        # creating start button
        start = QPushButton("Start / Reset", self)
 
        # setting geometry to the push button
        start.setGeometry(200, 120, 100, 35)
 
        # adding action to the start button
        start.clicked.connect(self.start_action)
 
        # creating a score label
        self.score = QLabel("Score : 0", self)
 
        # setting geometry
        self.score.setGeometry(160, 170, 180, 50)
 
        # setting alignment
        self.score.setAlignment(Qt.AlignCenter)
 
        # setting font
        self.score.setFont(QFont('Times', 16))
 
        # setting style sheet
        self.score.setStyleSheet("QLabel"
                                 "{"
                                 "border : 2px solid black;"
                                 "color : green;"
                                 "background : lightgrey;"
                                 "}")
 
        # creating label to show color
        self.color = QLabel("Color Name", self)
 
        # setting geometry
        self.color.setGeometry(50, 230, 400, 120)
 
        # setting alignment
        self.color.setAlignment(Qt.AlignCenter)
 
        # setting font
        self.color.setFont(QFont('Times', 30))
 
        # creating a line edit
        self.input_text = QLineEdit(self)
 
        # setting geometry
        self.input_text.setGeometry(150, 340, 200, 50)
 
        # setting font
        self.input_text.setFont(QFont('Arial', 14))
 
        # making line edit disabled
        self.input_text.setDisabled(True)
 
        # adding action to it when enter is pressed
        self.input_text.returnPressed.connect(self.input_action)
 
        # creating a timer label
        self.count = QLabel("30", self)
 
        # setting geometry
        self.count.setGeometry(225, 430, 50, 50)
 
        # setting alignment
        self.count.setAlignment(Qt.AlignCenter)
 
        # setting font
        self.count.setFont(QFont('Times', 14))
 
        # setting style sheet
        self.count.setStyleSheet("border : 2px solid black;"
                                 "background : lightgrey;")
 
        # creating a timer object
        timer = QTimer(self)
 
        # adding action to the timer
        timer.timeout.connect(self.show_time)
 
        # start timer
        timer.start(1000)
 
    def show_time(self):
 
        if self.start_Flag:
 
            # showing count value to label
            self.count.setText(str(self.count_value))
 
            # checking if count value is zero
            if self.count_value == 0:
 
                # making start flag to false
                self.start_Flag = False
 
                # making line edit widget disable
                self.input_text.setDisabled(True)
 
 
            # decrementing the count value
            self.count_value -= 1
 
 
 
 
    def start_action(self):
 
        # making start flag true
        self.start_Flag = True
 
        # resetting score
        self.score.setText("Score : 0")
        self.score_value = 0
 
        # resetting count value
        self.count_value = 30
 
        # clearing line edit text
        self.input_text.clear()
 
        # making line edit enabled
        self.input_text.setEnabled(True)
 
        # getting random color
        self.random_color = random.choice(self.color_list)
 
        # making color choice random color
        self.random_color.lower()
 
        # setting random color to the label
        self.color.setStyleSheet("color : " + self.random_color + ";")
 
        # getting another random color name
        random_text = random.choice(self.color_list)
 
        # setting text to label
        self.color.setText(random_text)
 
 
 
    def input_action(self):
 
        # get the line edit text
        text = self.input_text.text()
 
        # making text lower case
        text.lower()
 
        # checking text with random color
        if text == self.random_color:
            # clearing line edit text
            self.input_text.clear()
 
            # incrementing score value
            self.score_value += 1
 
            # setting score to the score label
            self.score.setText("Score : " + str(self.score_value))
 
            # getting random color
            self.random_color = random.choice(self.color_list)
 
            # making color choice random color
            self.random_color.lower()
 
            # setting random color to the label
            self.color.setStyleSheet("color : " + self.random_color + ";")
 
            # getting another random color name
            random_text = random.choice(self.color_list)
 
            # setting text to label
            self.color.setText(random_text)
 
 
 
# create pyqt5 app
App = QApplication(sys.argv)
 
# create the instance of our Window
window = Window()
 
# start the app
sys.exit(App.exec())

                    


Last Updated : 23 Feb, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads