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