ДАЮ 55 БАллов!!!
Доробити трикутник Серпінського
•Для кнопки «Побудувати» задай запуск функції draw().
•Запусти програму і зміни значення у текстовому полі (вводь значення не більше 9, бо на екрані більша кількість кроків непомітна).
•Додай пункт головного меню «Побудувати», закріпи виконання функції побудови трикутника draw.
Відповісти на запитання
•Яке призначення в програмі має клас Frame ?
•Яке призначення класу Entry(...) ?
•Яке призначення класу Button(...) ?
•Які параметри має метод pack(...) ?
from tkinter import *
root = Tk()
root.title('Трикутник Серпінського')
m = Menu(root)
m.add_command(label='Інфо')
m.add_command(label='Вихід', command=root.quit)
root.config(menu=m)
def draw(event):
c.delete('all')
n = int(entry_step.get())
x1 = 0
y1 = 500
x2 = 500
y2 = 500
x3 = 250
y3 = 0
rec(x1, y1, x2, y2, x3, y3, n)
def rec(x1, y1, x2, y2, x3, y3, n):
if n > 0:
c.create_line(x1, y1, x2, y2, width=1)
c.create_line(x1, y1, x3, y3, width=1)
c.create_line(x3, y3, x2, y2, width=1)
x1n = (x1 + x2) // 2
y1n = (y1 + y2) // 2
x2n = (x3 + x2) // 2
y2n = (y3 + y2) // 2
x3n = (x3 + x1) // 2
y3n = (y3 + y1) // 2
rec(x1, y1, x1n, y1n, x3n, y3n, n - 1)
rec(x2, y2, x1n, y1n, x2n, y2n, n - 1)
rec(x3, y3, x2n, y2n, x3n, y3n, n - 1)
f1 = Frame(root)
step = Label(f1, text='Кількість кроків')
entry_step = Entry(f1)
entry_step.insert(0, "1")
butt = Button(f1, text='Побудувати')
f1.pack(side=LEFT, fill=BOTH)
step.pack()
entry_step.pack()
butt.pack()
f2 = Frame(root, width=500, relief=SUNKEN, borderwidth=2)
c = Canvas(f2, width=500, height=500, bg='lightblue', cursor='exchange')
c.pack()
f2.pack(side=LEFT, fill=BOTH)
root.mainloop()
Answers & Comments
from tkinter import *
root = Tk()
root.title('Трикутник Серпінського')
m = Menu(root)
m.add_command(label='Інфо')
m.add_command(label='Вихід', command=root.quit)
root.config(menu=m)
def draw(event=None):
c.delete('all')
n = int(entry_step.get())
x1 = 0
y1 = 500
x2 = 500
y2 = 500
x3 = 250
y3 = 0
rec(x1, y1, x2, y2, x3, y3, n)
def rec(x1, y1, x2, y2, x3, y3, n):
if n > 0:
c.create_line(x1, y1, x2, y2, width=1)
c.create_line(x1, y1, x3, y3, width=1)
c.create_line(x3, y3, x2, y2, width=1)
x1n = (x1 + x2) // 2
y1n = (y1 + y2) // 2
x2n = (x3 + x2) // 2
y2n = (y3 + y2) // 2
x3n = (x3 + x1) // 2
y3n = (y3 + y1) // 2
rec(x1, y1, x1n, y1n, x3n, y3n, n - 1)
rec(x2, y2, x1n, y1n, x2n, y2n, n - 1)
rec(x3,y3,x2n,y2n,x3n,y3n,n-1)
f1 = Frame(root)
step = Label(f1,text='Кількість кроків')
entry_step = Entry(f1)
entry_step.insert(0,"1")
butt = Button(f1,text='Побудувати',command=draw)
f1.pack(side=LEFT,fill=BOTH)
step.pack()
entry_step.pack()
butt.pack()
f2 = Frame(root,width=500,
relief=SUNKEN,borderwidth=2)
c = Canvas(f2,width=500,height=500,
bg='lightblue',cursor='exchange')
c.pack()
f2.pack(side=LEFT,
fill=BOTH)
m.add_command(label='Побудувати', command=draw)
root.mainloop()