Мы уже использовали ранее цикл for для повторения действий определенное количество раз, когда управляли Черепашкой.
Воспользуемся им еще раз и порисуем.
Начнем с одного круга в случайном месте и нарисуем его по щелчку мыши:
from tkinter import * from random import randrange as rnd, choice root = Tk() root.geometry('600x600+100+100') canv = Canvas(bg='white') canv.pack(fill=BOTH,expand=1) def click(event): canv.delete(ALL) # очистить холст x = rnd(50,550) # выбрать случайные координаты y = rnd(50,550) r = 15 # радиус canv.create_oval(x-r,y-r,x+r,y+r, fill = 'green') # нарисовать canv.bind('<1>',click) # связать событие "Нажата левая кнопка мыши на холсте" с вызовом функции click mainloop()
1. Нарисовать 20 кругов в случайных местах
Дана функция для рисования «домика»:
from tkinter import * from random import randrange as rnd, choice root = Tk() root.geometry('600x600+100+100') canv = Canvas(bg='white') canv.pack(fill=BOTH,expand=1) colors = ('gray','#F2BF45','#F3761F','#F9E784','#E2F112','#E3D385') def click(event): d(event.x,event.y,50) def d(x,y,m): floors = rnd(2,7) canv.create_rectangle(x,y,x+m,y-m*(floors+1)/2, width=3, fill = 'white') xx = x for f in range(floors): yy = y - m*f/2 color = choice(colors) canv.create_rectangle(xx+m*0.2,yy-m*0.5,xx+m*0.4,yy-m*0.7, width=3,fill=color) color = choice(colors) canv.create_rectangle(xx+m*0.6,yy-m*0.5,xx+m*0.8,yy-m*0.7, width=3,fill=color) canv.bind('<1>',click) mainloop()
Дана функция для рисования звезды:
from tkinter import * from random import randrange as rnd, choice import math root = Tk() root.geometry('600x600+100+100') canv = Canvas(bg='white') canv.pack(fill=BOTH,expand=1) colors = ['red','orange','yellow','green','cyan','blue','magenta','black','gray','lightgreen'] def click(event): x = event.x y = event.y for ii in range(rnd(5)): r1 = rnd(10,20) r2 = r1*rnd(5,12)/12 star(x,y,r1,r2,choice(colors),choice(colors)) def star(x0=400,y0=300,r1=100,r2=30,col1='lightgreen',col2='green',da=9): a1 = 0 a2 = 0 a = [] da = 360//da for a1 in range(da//2,360+da,da): y1 = y0 + r1*math.sin(a1*math.pi/180) x1 = x0 + r1*math.cos(a1*math.pi/180) a += [(x1,y1)] y2 = y0 + r2*math.sin((a1+da//2)*math.pi/180) x2 = x0 + r2*math.cos((a1+da//2)*math.pi/180) a += [(x2,y2)] canv.create_polygon(a, fill = col1, outline = col2, width = 2) canv.bind('<1>',click) mainloop()
10. Нарисовать много разноцветных звезд в случайных местах
11. Нарисовать таблицу (сетку) линиями
12. Нарисовать таблицу из разноцветных ячеек (рисовать квадратами)
13. Нарисовать таблицу с горизонтальными рядами одного цвета
14. Нарисовать таблицу с вертикальными рядами одного цвета
15. Нарисовать таблицу со случайными цифрами внутри
16. Нарисовать таблицу со случайно выбранными числами из последовательности: 2,4,8,16,32,64,128,256,512
17. Нарисовать таблицу со случайно выбранными числами из последовательности: 2,4,8,16,32,64,128,256,512. Каждому числу — свой цвет
11. Нарисовать таблицу (сетку) линиями
12. Нарисовать таблицу из разноцветных ячеек (рисовать квадратами)
13. Нарисовать таблицу с горизонтальными рядами одного цвета
14. Нарисовать таблицу с вертикальными рядами одного цвета
15. Нарисовать таблицу со случайными цифрами внутри
16. Нарисовать таблицу со случайно выбранными числами из последовательности: 2,4,8,16,32,64,128,256,512
17. Нарисовать таблицу со случайно выбранными числами из последовательности: 2,4,8,16,32,64,128,256,512. Каждому числу — свой цвет