Search code examples
python-3.xtkinterrandomrestart

restart random number guessing game


So far, I have created a game in python to guess a random number. It works fine, but I want to create a reset button that will allow the user to guess one another time but different number than the first time. This is my code so far

import tkinter as tk
import random

randombroj=random.randint(0, 10)

def check():
   result=int(glvnes.get())            #the value of entry  widget
   if result==randombroj:
      gldugme.grid_forget()            #hide check button widget
      glvnes.grid_forget()             #hide entry widget

      bravo=tk.Label(root, text="Congratulations!!")      #congratulations widget
      bravo.config(width=40)
      bravo.grid(pady=0, row=1)

      def restart():       #restart function located in check function
         randombroj=random.randint(0, 10)      #get new random number
         bravo.destroy()                       #destroy congratulations widget
         weset.destroy()                       #destroy restart button
         gldugme.grid(pady=20, row=2)          #display again  check button
         glvnes.grid(pady=0, row=1)            #display again entry widget

      weset=tk.Button(root, text="Restart", font=("arial italic", 18), bg='#6BDF63', command=restart)                 #the restart button
      weset.config(width=13, heigh=2)
      weset.grid(pady=20, row=2)

root=tk.Tk()
root.title("Guess The  Secret Number")
root.geometry('450x250')
root.config(bg="#F2E06B")

glmeni=tk.Label(root, text="Can  you gess the secret number?", bg='#8CCEC0', font=("arial italic", 19))        #main  widget
glmeni.config(heigh=2)
glmeni.grid(pady=30, padx=28, row=0)

glvnes=tk.Entry(root, text="Enter number here:")       #entry box
glvnes.config(width=40)
glvnes.grid(pady=0, row=1)

gldugme=tk.Button(root, text="Check", font=("arial italic", 18), 
bg='#6BDF63', command=check)            #check button
gldugme.config(width=13, heigh=2)
gldugme.grid(pady=20, row=2)

root.mainloop()

Wnen you press the check button, if it is correct it will display congratulations, and than the check button is replaced with reset button. When I click it, the entry widget and the check button are reopening, but the random value doesn't change. It stays as it was the first time. How do I fix it?


Solution

  • You need to delete the last guess from the entry and declare randomobroj as global inside restart():

          def restart():       #restart function located in check function
             global randombroj
             glvnes.delete(0, "end")               # clear last guess
             ...