Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите прошу (по Python - from tkinter import)

Дарья Поповичева Ученик (101), открыт 5 дней назад
Как сделать цикл (нужно сделать 4 домика)
_Код:_
from tkinter import *
root=Tk()

root.title('Деревня')
root.geometry('500x500')
c=Canvas(bg='white',width=450,height=450)
c.pack(anchor=CENTER,expand=1)

def home():
def frame():
c.create_rectangle(50,50,150,150,fill='green',outline='black')

def roof():
c.create_polygon(35,50,100,5,165,50,35,50,fill='brown',outline='black')
c.create_oval(90,40,110,20,fill='black',outline='white')

def window():
c.create_rectangle(70,70,100,120,fill='black',outline='white')
c.create_line(85,70,100,120,fill='white')
c.create_line(85,70,70,120,fill='white')

def door():
c.create_rectangle(110,90,140,150,fill='green',outline='white')
c.create_rectangle(130,110,135,130,fill='white',outline='white')

frame()
roof()
window()
door()

home()
Дополнен 5 дней назад
Если что это я написала код для одного домика (7 класс)
2 ответа
Monster beats 2000 Мудрец (12618) 5 дней назад
Чтобы создать 4 домика, нужно модифицировать функцию home(), добавив параметры для координат, и затем вызвать её 4 раза с разными координатами. Вот исправленный код:

```python
from tkinter import *

root = Tk()
root.title('Деревня')
root.geometry('500x500')
c = Canvas(bg='white', width=450, height=450)
c.pack(anchor=CENTER, expand=1)

def home(x, y):
def frame():
c.create_rectangle(x, y, x+100, y+100, fill='green', outline='black')

def roof():
c.create_polygon(x-15, y, x+50, y-45, x+115, y, x-15, y, fill='brown', outline='black')
c.create_oval(x+40, y-10, x+60, y-30, fill='black', outline='white')

def window():
c.create_rectangle(x+20, y+20, x+50, y+70, fill='black', outline='white')
c.create_line(x+35, y+20, x+50, y+70, fill='white')
c.create_line(x+35, y+20, x+20, y+70, fill='white')

def door():
c.create_rectangle(x+60, y+40, x+90, y+100, fill='green', outline='white')
c.create_rectangle(x+80, y+60, x+85, y+80, fill='white', outline='white')

frame()
roof()
window()
door()

# Создаем 4 домика в разных позициях
home(50, 50) # Первый домик
home(200, 50) # Второй домик
home(50, 200) # Третий домик
home(200, 200) # Четвертый домик

root.mainloop()
```

Основные изменения:
1. В функцию home() добавлены параметры x и y для определения позиции домика
2. Все координаты внутри функций frame(), roof(), window() и door() теперь считаются относительно базовых координат x и y
3. Добавлены четыре вызова функции home() с разными координатами для создания домиков в разных местах

Домики будут расположены в виде сетки 2x2. При необходимости можно подкорректировать координаты для изменения расстояния между домиками.
Дарья ПоповичеваУченик (101) 5 дней назад
О спасибо
Вертолётов 625 Мудрец (13288) 5 дней назад
Код:
 import tkinter as tk 

def create_home(canvas, x_offset, y_offset):
def draw_frame():
canvas.create_rectangle(x_offset + 50, y_offset + 50, x_offset + 150, y_offset + 150, fill='green', outline='black')

def draw_roof():
canvas.create_polygon(x_offset + 35, y_offset + 50, x_offset + 100, y_offset + 5, x_offset + 165, y_offset + 50, fill='brown', outline='black')
canvas.create_oval(x_offset + 90, y_offset + 40, x_offset + 110, y_offset + 20, fill='black', outline='white')

def draw_window():
canvas.create_rectangle(x_offset + 70, y_offset + 70, x_offset + 100, y_offset + 120, fill='black', outline='white')
canvas.create_line(x_offset + 85, y_offset + 70, x_offset + 100, y_offset + 120, fill='white')
canvas.create_line(x_offset + 85, y_offset + 70, x_offset + 70, y_offset + 120, fill='white')

def draw_door():
canvas.create_rectangle(x_offset + 110, y_offset + 90, x_offset + 140, y_offset + 150, fill='green', outline='white')
canvas.create_rectangle(x_offset + 130, y_offset + 110, x_offset + 135, y_offset + 130, fill='white', outline='white')

draw_frame()
draw_roof()
draw_window()
draw_door()

root = tk.Tk()
root.title('Деревня')
root.geometry('800x600') # Увеличим размер окна для размещения четырех домиков

canvas = tk.Canvas(root, bg='white', width=800, height=600)
canvas.pack(anchor=tk.CENTER, expand=True)

# Параметры для расположения домиков
house_positions = [
(50, 50), # Координаты для первого дома
(200, 50), # Координаты для второго дома
(50, 200), # Координаты для третьего дома
(200, 200) # Координаты для четвертого дома
]

# Создаем домики в цикле
for x, y in house_positions:
create_home(canvas, x, y)

root.mainloop()
Похожие вопросы