Узори

Побудова узору передбачає використання циклу, в якому буде малюватись елемент цього узору.

Розглянемо простий узор, що складається з вертикальних ліній, розміщених по всій ширині полотна побудови.


Лінія створюється базовою командою canvas.create_line(x1,y1,x2,y2), де x1,y1 вказують на координати початку лінії, а  x2,y2 - на координати її кінця. Згідно з умовою, лінія повинна починатись нагорі полотна побудови, де у1=0, і закінчуватись внизу, де у2=500.

Тож, наприклад, перша лінія матиме таку команду побудови:
canvas.create_line(0,0,0,500)
Наступна:
canvas.create_line(10,0,10,500)
Ще наступна:
canvas.create_line(20,0,20,500)

Таким чином, якщо створити цикл, у якому значення х буде змінюватись в діапазоні від 0 до 500 з кроком 10, можна записати таку загальну команду побудови:

for x in range(0,500,10):

    canvas.create_line(x,0,x,500, width=2)


Випадковий колір

Для цікавішого вигляду можна використовувати випадкові кольори побудови. Проте якщо просто вибрати випадковий колір, він з певною ймовірністю, буде погано видимим. Тому доцільно створити список кольорів, з якого буде відбуватись відбір випадкового елемента. У список можна внести довільну кількість назв кольорів.

kolory=["black", "red", "green", "blue", "cyan", "yellow", "magenta", "azure", "brown", "coral", "grey", "khaki", "olive", "orange", "lavender", "ivory", "navy", "orchid", "plum"]

Команда нижче дозволяє вибрати один із кольорів списку:

k=random.choice(kolory)

Команда побудови лінії використовує змінну  k для призначення кольору малювання:

canvas.create_line(0,0,500,500, fill=k)


В такому разі задача загалом матиме такий код:

import random
from tkinter import *
tk = Tk()
canvas = Canvas(tk, width=500, height=500)

kolory=["black", "red", "green", "blue", "cyan", "yellow", "magenta", "azure", "brown", "coral", "grey", "khaki", "olive", "orange", "lavender", "ivory", "navy", "orchid", "plum"]

for x in range(0,500,10):
    k=random.choice(kolory)
    canvas.create_line(x,0,x,500, width=2, fill=k)

canvas.pack()


Задача 1. Створити узор із горизонтальних ліній

Задача 2. Створити узор у клітинку

Задача 3. Створити узор на половинках полотна

Задача 4. Створити узор у діагональну клітинку

Задача 5. Створити узор із променів, що розходяться

Задача 6. Створити узори на четвертинках екрану

Розв'язки самостійних задач:
for y in range(0,500,10):
    k=random.choice(kolory)
    canvas.create_line(0,y,500,y, width=2, fill=k)


for y in range(0,500,10):
    k=random.choice(kolory)
    canvas.create_line(0,y,500,y, width=2, fill=k)
    
for x in range(0,500,10):
    k=random.choice(kolory)
    canvas.create_line(x,0,x,500, width=2, fill=k)


for y in range(0,1000,20):
    k=random.choice(kolory)
    canvas.create_line(y,500,0,500-y, width=2, fill=k)

for x in range(0,1000,20):
    k=random.choice(kolory)
    canvas.create_line(0,x,x,0, width=2, fill=k)


for y in range(0,500,20):
    k=random.choice(kolory)
    canvas.create_line(250,0,0,y, width=2, fill=k)
    canvas.create_line(250,0,500,y, width=2, fill=k)
Остання зміна: субота 11 липня 2020 6:24