Brian - thanks for your continuing help! Here is ALL of the code. Sure
hope you can help. Cheers. Diana
# Number 10
# A Guess the Number program
# Hawksworth - 28/3/05
from Tkinter import *
import random
class Application(Frame):
""" GUI application - guess the number game. """
def __init__(self, master):
""" Initialize the frame. """
Frame.__init__(self, master)
self.grid()
self.bttn_clicks = 0 # the number of button clicks
self.create_widgets()
self.doRandom()
self.guess = 0
# a function to randomize a number
def doRandom(self):
self.number = random.randrange(10) + 1
# a function that creates various buttons and text boxes
def create_widgets(self):
""" Create button, text, and entry widgets. """
# create instruction label
self.inst_lbl = Label(self, text = "Guess a number between 1 and
10.\n"
"You have 5 guesses to get it right!", fg =
"blue")
self.inst_lbl.grid(row = 0,rowspan = 2, column = 0, columnspan = 2,
sticky = W)
self.inst_lbl = Label(self, text = "Make a guess then press the
Enter key", fg = "red")
self.inst_lbl.grid(row = 2,column = 0, columnspan = 2, sticky = W)
# create label for number
self.num_lbl = Label(self, text = "What's your Guess?: ", fg =
"blue")
self.num_lbl.grid(row = 3, column = 0, sticky = W)
# create entry (text)widget to accept number
self.num_ent = Entry(self, width = 5)
self.num_ent.grid(row = 3, column = 1, sticky = W)
self.num_ent.focus_set()
self.num_ent.bind('<Return>', (lambda event: self.two_commands()))
# create submit button to call the appropriate message
self.submit_bttn = Button(self, text = "Tries: 0", command =
self.two_commands)
self.submit_bttn.grid(row = 4, column = 0, sticky = W)
# create number of tries button
""" Create button which displays number of clicks. """
self.click_bttn = Button(self, text = "Tries: 0", command =
self.two_commands)
self.click_bttn.grid(row = 4, column = 0, sticky = W)
# create text widget to display message
self.message_txt = Text(self, width = 35, height = 5, wrap = WORD)
self.message_txt.grid(row = 5, column = 0, columnspan = 2, sticky =
W)
# create reset and quit widgets
self.bReset = Button(self, text="Reset", command=self.doReset)
self.bReset.grid(row = 6, column = 1, sticky = W)
self.bQuit = Button(self, text="Quit", command=self.doQuit)
self.bQuit.grid(row = 7, column = 0, sticky = W)
# quit the program
def doQuit(self):
self.quit()
# restore default settings
def doReset(self):
self.doRandom() # randomizing another number
self.bttn_clicks = 0 # the number of button clicks
self.tries = 0 # increasing the number of guesses
self.create_widgets() # returning to default settings
# calling the functions to reveal the message
# and to update the count button
def two_commands(self):
self.reveal()
self.update_count()
# updating the count button on user click
def update_count(self):
""" Increase click count and display new total. """
self.bttn_clicks += 1
self.click_bttn["text"] = "Tries: %s" %self.bttn_clicks
if self.bttn_clicks > 5:
self.toomany()
def toomany(self):
message = "Out of guesses! Your number was: %s" %self.guess + " The
number you wanted was: %s" %self.number
#message += str(self.number)
self.message_txt.config(state = NORMAL)
self.message_txt.delete(0.0, END)
self.message_txt.insert(0.0, message)
self.message_txt.config(state = DISABLED)
# revealing the message comparing the guess with the random number
def reveal(self):
""" Display message based on number. Changing text widget to integer
Correcting the entry of a string variable - except the error
checking isn't working!"""
try:
self.guess = int(self.num_ent.get())
except(ValueError),e:
message = "%s is not a number. Please try again!" %self.guess
else:
self.num_ent.delete(0,END)
self.num_ent.focus_set()
if self.guess < self.number:
message = "%s is too low! You need to guess higher. "
%self.guess
if self.guess > self.number:
message = "%s is too high! You need to guess lower."
%self.guess
if self.guess == self.number:
message = "%s is the correct number!" %self.guess
self.message_txt.config(state = NORMAL)
self.message_txt.config(state = DISABLED)
self.message_txt.config(state = NORMAL)
self.message_txt.delete(0.0, END)
self.message_txt.insert(0.0, message)
self.message_txt.config(state = DISABLED)
# main
root = Tk()
root.title("Guess the Number Game")
root.geometry("250x250")
app = Application(root)
root.mainloop()
_______________________________________________
Tutor maillist - [email protected]
http://mail.python.org/mailman/listinfo/tutor