Умоляю Нужно написать команды для Python по этой фотографии​

kamilamih kamilamih    3   28.03.2020 21:29    0

Ответы
2007628475626 2007628475626  12.10.2020 08:20

import tkinter as tk  

import random

import threading

import time

class TriangleStruct(object):

   def __init__(self, fx, fy, sx, sy, thx, thy):

       self.leftuppercorner = {'leftupper_x': fx, 'leftupper_y' : fy}

       self.secondcorner = {'middle_x': sx, 'middle_y':sy}

       self.thirdcorner = {'lower_x' : thx, 'lower_y':thy}

   

class MainWin(tk.Frame):

   def __init__(self, root):

       super().__init__(root)

       self.avaiable_colors = ['orange', 'red', 'green', 'yellow', 'purple']

       self._graphstack_depth = 7

       self._graphstack_buffer = []

       self.build()

   def build(self):

       self.canv = tk.Canvas(self, width = 640, height = 480)

       self.canv.pack()

       threading.Thread(target=self.infinity_triangle_drawing).start()

   def draw_triangles(self):

       for step in range(self._graphstack_depth):

           self._graphstack_buffer.append(self.gen_rand_triangle())

       for step in range(self._graphstack_depth):

           self.canv.create_polygon(

               (self._graphstack_buffer[step].leftuppercorner['leftupper_x'], self._graphstack_buffer[step].leftuppercorner['leftupper_y']),

               (self._graphstack_buffer[step].secondcorner['middle_x'], self._graphstack_buffer[step].secondcorner['middle_y']),

               (self._graphstack_buffer[step].thirdcorner['lower_x'], self._graphstack_buffer[step].thirdcorner['lower_y']),

               fill = random.choice(self.avaiable_colors),

               outline = 'black'

               )

   def gen_rand_triangle(self):

       firstxpos, firstypos = random.randint(0, 540), random.randint(0, 380)

       secxpos, secypos = random.randint(10, 620), random.randint(10, 440)

       thirdxpos, thirdypos = random.randint(0, 620), random.randint(20, 440)

       return TriangleStruct(firstxpos, firstypos, secxpos, secypos, thirdxpos, thirdypos)

   def infinity_triangle_drawing(self):

       while True:

           self._graphstack_buffer.clear()

           self.draw_triangles()

           time.sleep(0.1)

           self.canv.delete('all')

if __name__ == '__main__':

   root = tk.Tk()

   win = MainWin(root)

   win.pack()

   root.title('triangles')

   root.resizable(False, False)

   root.geometry('650x490')

   root.mainloop()

Объяснение:

Код для задачи 6. Под задание 5 попробуй подогнать самостоятельно. Точки треугольника по координатам (х, у) описывает класс TriangleStruct. Атрибут MainWin._graphstack_buffer - буфер, в котором хранятся экземпляры TriangleStruct. MainWin._graphstack_depth - максимальная длина для буфера объектов. Логика отрисовки описана в методе MainWin.draw_triangles. Метод MainWin.build реализует построение самого окна приложения (за исключением размеров окна, и прочих настроек родительского виджета. Это описано после блока if __name__ == '__main__'). Для самостоятельного ввода параметров треугольника, который нужно нарисовать, вы можете добавить поля ввода tk.Entry (их описание должно находиться в методе MainWin.build) для ввода координат вершин.

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика