Seite 1 von 1

Random Rectangle

Verfasst: Donnerstag 12. Januar 2006, 23:53
von Marz
ich hab mich mal spasserhalber mit Canvas und Tkinter beschaeftigt ... folgendes ist rausgekommen :

Code: Alles auswählen

from Tkinter import *
from random import *
from time import *

zufall = {}
j = 1
a = '('
e = ',)'

hauptfenster = Tk()
canvas = Canvas(hauptfenster,height="5c",width="5c",bg="blue")
canvas.grid()

def mix ():
        for i in range(4):
          zufall[i]=  randint(1,100)
        id = canvas.create_rectangle(zufall.values(),fill="black")

def delete(event):
        w = event.widget
        id = w.find_overlapping(event.x,event.y,event.x,event.y)
        w.delete(id)

        global zufall
        global j
        if str(id) == a+str(j)+e:
                mix()
                j = j+1

mix()
canvas.bind("<Button-1>",delete)

hauptfenster.mainloop()
Man muss das Rechteck an der zufaellig entstandene Stelle anklicken damit es weg geht und dann entsteht an zufaellig Stelle ein neues ... u.s.w.
Ist etwas sinnfrei aber zum lernen denke ich ganz nett. Ich wollte nun fragen wie ich das noch kuerzer und effizienter machen koennte.

Verfasst: Freitag 13. Januar 2006, 07:18
von mawe
Hi!

Etwas kürzer geht's schon ;)

Code: Alles auswählen

from Tkinter import *
import random

hauptfenster = Tk()
canvas = Canvas(hauptfenster, height=100, width=100, bg="blue")
canvas.pack()

def mix():
    zufall = random.sample(range(1,100), 4)
    canvas.create_rectangle(zufall, fill="black")

def check(event):
    rid = canvas.find_overlapping(event.x, event.y, event.x, event.y)
    if rid:
        canvas.delete(rid)
        mix()

mix()
canvas.bind("<Button-1>", check)

hauptfenster.mainloop()
Gruß, mawe

Verfasst: Freitag 13. Januar 2006, 15:02
von Gast
Thanks das wollte ich wissen ...

Grüße Marz