Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.60 KB | None | 0 0
  1. import random
  2. from tkinter import Tk, Label, Button, Entry, StringVar, DISABLED, NORMAL, END, W, E
  3.  
  4. class GuessingGame:
  5. def __init__(self, master):
  6. self.master = master
  7. master.title("Guessing Game")
  8.  
  9. self.secret_number = random.randint(1, 100)
  10. self.guess = None
  11. self.num_guesses = 0
  12.  
  13. self.message = "Guess a number from 1 to 100"
  14. self.label_text = StringVar()
  15. self.label_text.set(self.message)
  16. self.label = Label(master, textvariable=self.label_text)
  17.  
  18. vcmd = master.register(self.validate) # we have to wrap the command
  19. self.entry = Entry(master, validate="key", validatecommand=(vcmd, '%P'))
  20.  
  21. self.guess_button = Button(master, text="Guess", command=self.guess_number)
  22. self.reset_button = Button(master, text="Play again", command=self.reset, state=DISABLED)
  23.  
  24. self.label.grid(row=0, column=0, columnspan=2, sticky=W+E)
  25. self.entry.grid(row=1, column=0, columnspan=2, sticky=W+E)
  26. self.guess_button.grid(row=2, column=0)
  27. self.reset_button.grid(row=2, column=1)
  28.  
  29. def validate(self, new_text):
  30. if not new_text: # the field is being cleared
  31. self.guess = None
  32. return True
  33.  
  34. try:
  35. guess = int(new_text)
  36. if 1 <= guess <= 100:
  37. self.guess = guess
  38. return True
  39. else:
  40. return False
  41. except ValueError:
  42. return False
  43.  
  44. def guess_number(self):
  45. self.num_guesses += 1
  46.  
  47. if self.guess is None:
  48. self.message = "Guess a number from 1 to 100"
  49.  
  50. elif self.guess == self.secret_number:
  51. suffix = '' if self.num_guesses == 1 else 'es'
  52. self.message = "Congratulations! You guessed the number after %d guess%s." % (self.num_guesses, suffix)
  53. self.guess_button.configure(state=DISABLED)
  54. self.reset_button.configure(state=NORMAL)
  55.  
  56. elif self.guess < self.secret_number:
  57. self.message = "Too low! Guess again!"
  58. else:
  59. self.message = "Too high! Guess again!"
  60.  
  61. self.label_text.set(self.message)
  62.  
  63. def reset(self):
  64. self.entry.delete(0, END)
  65. self.secret_number = random.randint(1, 100)
  66. self.guess = 0
  67. self.num_guesses = 0
  68.  
  69. self.message = "Guess a number from 1 to 100"
  70. self.label_text.set(self.message)
  71.  
  72. self.guess_button.configure(state=NORMAL)
  73. self.reset_button.configure(state=DISABLED)
  74.  
  75. root = Tk()
  76. my_gui = GuessingGame(root)
  77. root.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement