Untitled

 avatar
unknown
python
2 years ago
1.5 kB
8
Indexable
import tkinter as tk
import math

vertical_spacing = 80
horizontal_spacing = 80

top = 50
down = top+2*vertical_spacing
left = 100
right = left+6*horizontal_spacing

root = tk.Tk()
mycanvas = tk.Canvas(root, width=650, height=300, bg="white")
mycanvas.pack()

def init():
    mycanvas.delete("all")
    for i in range(3):  # horizontal line
        mycanvas.create_line(left, top+i*vertical_spacing, right,
                            top+i*vertical_spacing, fill="black")

    for i in range(7):  # vertical line
        mycanvas.create_line(left+i*horizontal_spacing, top,
                            left+i*horizontal_spacing, down, fill="black")


    for i in range(3):
        mycanvas.create_text(left-30, top+i*vertical_spacing,
                            text=1-i, fill='black', font=('Arial', 18))

    cnt = 0
    for i in range(7):
        mycanvas.create_text(left+i*horizontal_spacing, down+30,
                            text=i, fill='black', font=('Arial', 18))
        cnt += 1

    mycanvas.create_text(30, 130, text='f(n)', fill='black', font=('Arial', 22))
    mycanvas.create_text(340, 280, text='n', fill='black', font=('Arial', 22))

T = 0
f = 0.1


def gety(x):
    y = math.cos(f*x+T)
    return int(top+vertical_spacing+y*vertical_spacing)

def change():
    init()
    global T
    for i in range(left, right, 1):
        y1 = gety(i)
        y2 = gety(i+1)
        mycanvas.create_line(i, y1, i+1, y2, fill="blue")

    T += 1
    root.after(100, change)


root.after(0, change)
root.mainloop()
Editor is loading...