Connecting Tech Pros Worldwide Forums | Help | Site Map

Tkinter XMas Graphics

kudos's Avatar
Expert
 
Join Date: Jul 2006
Location: Norway
Posts: 114
#1   Dec 14 '06
Expand|Select|Wrap|Line Numbers
  1. import Tkinter
  2. import random
  3.  
  4. root = Tkinter.Tk()
  5. w = Tkinter.Canvas(root, width=400, height=300, background="#000000")
  6. w.create_text(200,150,text="Happy Christmas 2006",font="Arial 20",fill="#ff0000")
  7. w.create_text(200,170,text="from kudos",font="Arial 12",fill="#00ff00")
  8. w.pack()
  9.  
  10. flake = [];
  11. moves = []
  12. for i in range(50):
  13.  flake.append(w.create_text(random.randrange(400),random.randrange(300),text="*",fill="#ffffff",font="Times 30"))
  14.  moves.append([0.04 + random.random()/10,0.7 + random.random()])
  15. try:
  16.  while 1:
  17.   for i in range(len(flake)):
  18.    p = w.coords(flake[i])
  19.    p[0]+=moves[i][0]
  20.    p[1]+=moves[i][1]
  21.    w.coords(flake[i],p[0],p[1])
  22.    if(p[1]>310):
  23.     w.coords(flake[i],random.randrange(400),-10)
  24.    root.update_idletasks() # redraw
  25.    root.update() # process events
  26. except:
  27.  pass
  28.  
run it on your computer..
-best wishes kudos



bartonc's Avatar
Moderator
 
Join Date: Sep 2006
Location: Minden, Nevada, USA
Posts: 6,400
#2   Dec 15 '06

re: Tkinter XMas Graphics


Very cool! Thanks kudos. Happy Christmas to you, too.
Nice, elegant piece of software, my friend. Keep posting,
Barton
kudos's Avatar
Expert
 
Join Date: Jul 2006
Location: Norway
Posts: 114
#3   Dec 15 '06

re: Tkinter XMas Graphics


Hi,
yeah true, it would be a problem if the try except would be inside the while loop, but since it outside, I guess the only Tclerror you going to get is when the window is closed. But I really haven't used Tcl much, not even when programming applications on IRIX and Solaris (used Xlib)

Expand|Select|Wrap|Line Numbers
  1. import Tkinter
  2. import random
  3.  
  4. root = Tkinter.Tk()
  5. w = Tkinter.Canvas(root, width=400, height=300, background="#000000")
  6. w.create_text(200,150,text="Happy Christmas 2006",font="Arial 20",fill="#ff0000")
  7. w.create_text(200,170,text="from kudos",font="Arial 12",fill="#00ff00")
  8. w.pack()
  9.  
  10. flake = [];
  11. moves = []
  12. for i in range(50):
  13.  flake.append(w.create_text(random.randrange(400),random.randrange(300),text="*",fill="#ffffff",font="Times 30"))
  14.  moves.append([0.04 + random.random()/10,0.7 + random.random()])
  15. try:
  16.  while 1:
  17.   for i in range(len(flake)):
  18.    p = w.coords(flake[i])
  19.    p[0]+=moves[i][0]
  20.    p[1]+=moves[i][1]
  21.    w.coords(flake[i],p[0],p[1])
  22.    if(p[1]>310):
  23.     w.coords(flake[i],random.randrange(400),-10)
  24.    root.update_idletasks()
  25.    root.update()
  26. except Tkinter.TclError:
  27.  pass
  28.  
(there is a tiny fix)

-kudos



Quote:

Originally Posted by bartonc

I like it! It would have taken me a while to figure on using that error type. Thanks kudos. The critique is more for the benefit of others reading this.

But what happens if you get a tcl error? No window? No way to stop it?
These are mostly academic questions because (as you say) you don't us Tk much, but good for us to think about. I'm not actually going to break my tk installation to test it.

Reply