Skip to content

Instantly share code, notes, and snippets.

@T31337
Last active June 7, 2017 18:27
Show Gist options
  • Save T31337/26ea459d46fa3b01fdc10d5b98fb7a4d to your computer and use it in GitHub Desktop.
Save T31337/26ea459d46fa3b01fdc10d5b98fb7a4d to your computer and use it in GitHub Desktop.
Graphical Number Guessing Game Written Python Using Qt5
#!/usr/bin/env python
import sys,random
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton,QLabel
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import *
class App(QWidget):
def __init__(self):
super().__init__()
#VARIABLES#
self.count=0 #How Many Times Did We Push The Button?
self.wasRight=0 #How Many Guesses Were Correct?
self.maxNum = 100
self.minNum = 1
self.generated=0 #how many numbers did we generate so far?
##
self.title = 'PsyGame'
self.left = 100
self.top = 100
self.width = 320
self.height = 200
self.initUI()
def showMessage(self,text,icon=1):
msg = QMessageBox()
msg.setText(text)
msg.setIcon(icon)
msg.exec_()
def correct(self):
if not self.wasRight >= self.generated:
#ok, we are not cheating
self.wasRight += 1
self.lblCorrect.setText('Correct: {0}\r\nGenerated: {1}'.format(self.wasRight,self.count))
self.btnCorrect.setEnabled(False)
else:
self.showMessage("Nice Try Cheater",2)
def initUI(self):
#WINDOW LOGIC
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
#WINDOW OBJECTS
##SpinBox Seems To 'Disable' After Clicking A Button?
self.number1 = QSpinBox(self)
self.number2 = QSpinBox(self)
self.number1.setRange(self.minNum,self.maxNum)
self.number2.setRange(self.minNum,self.maxNum)
self.number1.setValue(self.minNum)
self.number2.setValue(self.maxNum)
self.number2.move(38,70)
self.number1.move(38,30)
##
self.lblNumber = QLabel('',self)
self.lblNumber.setFixedWidth(70)
self.lblNumber.setFixedHeight(70)
self.lblNumber.move(100,145)
#
self.lblCorrect = QLabel('Correct: {0}\r\nGenerated: {1}'.format(self.wasRight,self.count),self)
self.lblCorrect.move(20,10)
self.lblCorrect.setFixedWidth(300)
self.lblCorrect.setFixedHeight(200)
#
btnGenerate = QPushButton('Go!', self)
btnGenerate.setToolTip('Generate A New Number')
btnGenerate.move(100,70)
self.btnCorrect = QPushButton('I Got It Right! :)',self)
#Connect The Buttons To Functions
btnGenerate.clicked.connect(self.generate)
self.btnCorrect.clicked.connect(self.correct)
self.show()
@pyqtSlot()
def generate(self):
print('PyQt5 button click')
#Enable The Correct Button!
self.btnCorrect.setEnabled(True)
self.count+=1
self.generated+=1
num1 = self.number1.value()
num2 = self.number2.value()
if num1 < num2:
self.number = random.randint(num1,num2)
else:
self.showMessage("Error:\r\nPlease Be Sure Minimum Is Less Than Maximum And They Are Not The Same Number",3)
print('Number: ',self.number)
self.lblNumber.setText(str(self.number))
print('Button Clicked %s Times' %self.count)
print('Numbers Generated: %s' %self.count)
self.lblCorrect.setText('Correct: {0}\r\nGenerated: {1}'.format(self.wasRight,self.count))
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())
@T31337
Copy link
Author

T31337 commented Jun 4, 2017

Implemented Improved Basic Cheat Checking

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment