import tkinter as tk
from functools import partial
from turtle import RawTurtle
# Функции управления движением
def move_forward():
turtle.forward(50)
def turn_left():
turtle.left(90)
def turn_right():
turtle.right(90)
def clear_canvas():
turtle.reset()
turtle.shape("turtle")
# Функция смены цвета
def set_color(color_name):
turtle.color(color_name)
# Инициализация главного окна
root = tk.Tk()
root.title("Черепашка-рисовальщик")
# Создание холста
canvas = tk.Canvas(root, width=400, height=400, bg="white")
canvas.pack(padx=10, pady=10)
# Инициализация черепашки
turtle = RawTurtle(canvas)
turtle.shape("turtle")
# Панель управления движением
control_frame = tk.Frame(root)
control_frame.pack(pady=5)
tk.Button(control_frame, text="Налево", width=10, command=turn_left).pack(side=tk.LEFT, padx=5)
tk.Button(control_frame, text="Вперед", width=10, command=move_forward).pack(side=tk.LEFT, padx=5)
tk.Button(control_frame, text="Направо", width=10, command=turn_right).pack(side=tk.LEFT, padx=5)
tk.Button(control_frame, text="Очистить", width=10, command=clear_canvas).pack(side=tk.LEFT, padx=5)
# Панель выбора цвета
color_frame = tk.Frame(root)
color_frame.pack(pady=10)
# Список цветов для создания кнопок в цикле
colors = [
{"name": "Красный", "value": "red", "fg": "white"},
{"name": "Синий", "value": "blue", "fg": "white"},
{"name": "Зеленый", "value": "green", "fg": "white"},
{"name": "Желтый", "value": "yellow", "fg": "black"}
]
for color in colors:
# Использование partial вместо lambda для передачи аргумента в функцию
color_command = partial(set_color, color["value"])
tk.Button(
color_frame,
text=color["name"],
bg=color["value"],
fg=color["fg"],
width=10,
command=color_command
).pack(side=tk.LEFT, padx=5)
# Запуск приложения
root.mainloop()