Создать случайный прямоугольник на холсте

Я хочу создать случайный прямоугольник в моем классе прямоугольников.

У меня есть функция def randomRects(x,y,width,height): (x, y) — это верхний левый угол, а ширина должна быть меньше 90, высота меньше 70.

Я понимаю, что для создания случайного прямоугольника вам нужно сделать что-то вроде canvas.create_rectangle(x1,x2,y1,y1), но я не уверен, как это сделать в этой ситуации. Я также не уверен, должны ли ширина и высота быть в параметрах или нет.

import random

class Rectangle:

def __init__(self, height, width):
    self.height = 80
    self.width = 100
 #not sure if above is correct

def randomRects(x,y,width, height):
        w = random.randrange(100)
        h = random.randrange(80) 
        w.create_rectangle(x,y,width,height)
        h.create_rectangle(x,y,width,height)

person rprogramr    schedule 19.04.2016    source источник


Ответы (1)


Один из способов сделать это:

#!/usr/bin/env python
from tkinter import *
import random

root = Tk()

class Recta:
    def __init__(self, height, width):
        self.height=80
        self.width=100
    def randomRects(self,canvas):
        w = random.randrange(100)
        h = random.randrange(80)
        canvas.create_rectangle(0,0,h,w,fill='green')

c = Canvas(root)
c.pack()

tes = Recta(10,20)
tes.randomRects(c)

root.mainloop()

Конечно, метод init немного глуп, так как он принимает аргументы, но не использует их. Однако ваш код для этого метода был правильным.

person curious_weather    schedule 20.04.2016
comment
нет проблем :) Мне пришлось запустить его несколько раз, чтобы увидеть это, потому что сначала случайные прямоугольники были такими маленькими, что я их пропустил. - person curious_weather; 20.04.2016
comment
да, я только что прошел через это, как вы думаете, мне следует добавить метод str и repr? - person rprogramr; 20.04.2016
comment
ну, есть много вещей, которые вы могли бы сделать, если вам нужен минимальный размер, вы можете сделать w = random.randrange(60) + 40, так что это будет как минимум 40 и что-то между этим и 100. Просто стройте из того, где вы находитесь, и играйте, найдите то, что подходит вашему потребности! - person curious_weather; 20.04.2016
comment
Кроме того, если я помог вам, вы можете поблагодарить меня, установив мой ответ как правильный и проголосовав за него :) Вот как вы проявляете любовь к переполнению стека! - person curious_weather; 20.04.2016
comment
Хорошо, я попробую добавить кнопки, чтобы я мог случайным образом добавлять прямоугольники. Никогда не делал этого раньше, но я попробую исследовать, ха-ха! - person rprogramr; 20.04.2016
comment
вперед, продолжать! С Tkinter интересно создавать графические интерфейсы, вы можете многое сделать с ним быстро. Наслаждаться! - person curious_weather; 20.04.2016
comment
Мне было интересно, как бы вы заставили прямоугольники появляться в случайных положениях и случайных размерах? - person rprogramr; 21.04.2016
comment
в canvas.create_rectangle(xoffset,yoffset,width,height) первые два аргумента, xoffset и yoffset, определяют положение на плоскости. поэтому вы можете просто создать еще две переменные, такие как x=random.randrange(200), и вызвать canvas.create_rectangle(x,y,w,h), чтобы прямоугольник появлялся в случайных позициях. - person curious_weather; 21.04.2016