Python: How to get score board on canvas -


i want score show on canvas far no avail. thought use:

self.canvas.create_text(200, 60, fill="darkblue", font="times 15 italic bold", text="your score is:",self.score) 

didn't work unfortunately, how score show on canvas? wondering how message box pop saying "you won!" when score = 10. , lastly, how message box pop saying "you lost if score < 10 , there no numbers on canvas.

code far using python 3.3:

        def click(self, event):         if self.canvas.find_withtag(current):             item_uid = event.widget.find_closest(event.x, event.y)[0]              is_even = false              try:  # clicked oval                 self.bubbles[item_uid]             except keyerror:  # clicked text                 key, value in self.bubbles.iteritems():                     if item_uid == value[5]:  # comparing text_id                         if value[4] % 2 == 0:                             is_even = true                         self.canvas.delete(key)  # deleting oval                         self.canvas.delete(item_uid)  # deleting text             else:                 if self.bubbles[item_uid][4] % 2 == 0:                     is_even = true                 self.canvas.delete(item_uid)  # deleting oval                 self.canvas.delete(self.bubbles[item_uid][5])  # deleting text             if is_even:                 self.score += 1             else:                 self.score -= 1              if self.score == 10:                 print ("you won")          print (self.score) 

that fun game! script gave below shows how want (display current score , show messages). lines ## above them added:

from tkinter import * import random ## tkinter.messagebox import showinfo  class bubbleframe:      def __init__(self, root):         root.title("math bubbles")         self.bubbles = {}         self.score = 0         button(root, text="start", width=8, command=self.initialize_bubbles).pack()  # button starts game, making bubbles move across screen         button(root, text="quit", width=8, command=quit).pack()         self.canvas = canvas(root, width=800, height=650, bg='#afeeee')         self.canvas.create_text(400, 30, fill="darkblue", font="times 20 italic bold", text="click bubbles multiples of two.")         ##         self.current_score = self.canvas.create_text(200, 60, fill="darkblue", font="times 15 italic bold", text="your score is:")         self.canvas.pack()      def initialize_bubbles(self):         each_no in range(1, 21):             xval = random.randint(5, 765)             yval = random.randint(5, 615)             oval_id = self.canvas.create_oval(xval, yval, xval + 30, yval + 30,fill="#00ffff", outline="#00bfff", width=5, tags="bubble")             text_id = self.canvas.create_text(xval + 15, yval + 15, text=each_no, tags="bubble")             self.canvas.tag_bind("bubble", "<button-1>", lambda x: self.click(x))             self.bubbles[oval_id] = (xval, yval, 0, 0, each_no, text_id)        def click(self, event):         if self.canvas.find_withtag(current):             item_uid = event.widget.find_closest(event.x, event.y)[0]             is_even = false             try:                   self.bubbles[item_uid]             except keyerror:                   key, value in self.bubbles.iteritems():                     if item_uid == value[5]:                           if value[4] % 2 == 0:                             is_even = true                         self.canvas.delete(key)                         self.canvas.delete(item_uid)             else:                 if self.bubbles[item_uid][4] % 2 == 0:                     is_even = true                 self.canvas.delete(item_uid)                 self.canvas.delete(self.bubbles[item_uid][5])             if is_even:                 self.score += 1             else:                 self.score -= 1              if self.score == 10:                 ##                 showinfo("winner", "you won!")         ##         self.canvas.delete(self.current_score)         ##         self.current_score = self.canvas.create_text(200, 60, fill="darkblue", font="times 15 italic bold", text="your score is: %s"%self.score)      def loop(self, root):         oval_id, (x, y, dx, dy, each_no, text_id) in self.bubbles.items():             dx += random.randint(-1, 1)             dy += random.randint(-1, 1)             dx, dy = max(-5, min(dx, 5)), max(-5, min(dy, 5))             if not 0 < x < 770:                 dx = -dx             if not 0 < y < 620:                 dy = -dy             self.canvas.move(oval_id, dx, dy)             self.canvas.move(text_id, dx, dy)             self.bubbles[oval_id] = (x + dx, y + dy, dx, dy, each_no, text_id)         root.after(100, self.loop, root)  if __name__ == "__main__":     root = tk()     frame = bubbleframe(root)     frame.loop(root)     root.mainloop() 

Comments