Помогите правильно и ровно разместить фигуры

Zubenko

Новичок
Пользователь
Сен 13, 2020
6
1
3
Помогите, пожалуйста, выровнять две фигуры так, чтобы они были расположены в одном графическом окне. Цвет фигур должен быть одинаковым. Поле между кольцами и квадратом покрасить различной заливкой. 1 фигура рисуется линиями, 2 встроенный средства, для другого варианта - наоборот.

Сам код в репозиторий: Жмых

Пример: Screenshot_21.png
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Помогите, пожалуйста, выровнять две фигуры так, чтобы они были расположены в одном графическом окне. Цвет фигур должен быть одинаковым. Поле между кольцами и квадратом покрасить различной заливкой
Вот пример:
Python:
from tkinter import Tk, Canvas, Frame, BOTH
import random


class Example(Frame):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.master.title("Рисуем линии")
        self.pack(fill=BOTH, expand=1)
        canvas = Canvas(self)

        for i in reversed(range(2, 11)):
            if i == 2:
                # центральный элемент
                self.draw(canvas, [105, 200], i * 10, 'white', 'oval')
                self.draw(canvas, [305, 200], i * 10, 'white', 'rect')
            else:
                self.draw(canvas, [105, 200], i * 10, self.get_color(), 'oval')
                self.draw(canvas, [305, 200], i * 10, self.get_color(), 'rect')

        canvas.pack(fill=BOTH, expand=1)

    def get_color(self):
        r = lambda: random.randint(0, 255)
        return '#%02X%02X%02X' % (r(), r(), r())

    def draw(self, canvas, center, size, color, figure):
        x1 = center[0] - size
        x2 = center[0] + size
        y1 = center[1] - size
        y2 = center[1] + size
        if figure == 'rect':
            canvas.create_rectangle(x1, y1, x2, y2, width=1, fill=color)
        elif figure == 'oval':
            canvas.create_oval(x1, y1, x2, y2, width=1, fill=color)


def main():
    root = Tk()
    ex = Example()
    root.geometry("410x400+300+300")
    root.mainloop()


if __name__ == '__main__':
    main()
 
  • Мне нравится
Реакции: Student и Zubenko

Zubenko

Новичок
Пользователь
Сен 13, 2020
6
1
3
Вот пример:
Python:
from tkinter import Tk, Canvas, Frame, BOTH
import random


class Example(Frame):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.master.title("Рисуем линии")
        self.pack(fill=BOTH, expand=1)
        canvas = Canvas(self)

        for i in reversed(range(2, 11)):
            if i == 2:
                # центральный элемент
                self.draw(canvas, [105, 200], i * 10, 'white', 'oval')
                self.draw(canvas, [305, 200], i * 10, 'white', 'rect')
            else:
                self.draw(canvas, [105, 200], i * 10, self.get_color(), 'oval')
                self.draw(canvas, [305, 200], i * 10, self.get_color(), 'rect')

        canvas.pack(fill=BOTH, expand=1)

    def get_color(self):
        r = lambda: random.randint(0, 255)
        return '#%02X%02X%02X' % (r(), r(), r())

    def draw(self, canvas, center, size, color, figure):
        x1 = center[0] - size
        x2 = center[0] + size
        y1 = center[1] - size
        y2 = center[1] + size
        if figure == 'rect':
            canvas.create_rectangle(x1, y1, x2, y2, width=1, fill=color)
        elif figure == 'oval':
            canvas.create_oval(x1, y1, x2, y2, width=1, fill=color)


def main():
    root = Tk()
    ex = Example()
    root.geometry("410x400+300+300")
    root.mainloop()


if __name__ == '__main__':
    main()
Спасибо, гений!
 
  • Мне нравится
Реакции: Student

Форум IT Специалистов