Random Rectangle

Code-Stücke können hier veröffentlicht werden.
Antworten
Marz
User
Beiträge: 7
Registriert: Sonntag 19. Dezember 2004, 20:22

Donnerstag 12. Januar 2006, 23:53

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.
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Freitag 13. Januar 2006, 07:18

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
Gast

Freitag 13. Januar 2006, 15:02

Thanks das wollte ich wissen ...

Grüße Marz
Antworten