Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
8.5 kB
1
Indexable
Never
from tkinter import *
from ctypes import windll, Structure, c_long, byref
import math


root = Tk()
root.title("PULSE")

maxX = root.winfo_screenwidth()
maxY = root.winfo_screenheight()
poleX = maxX-maxX/100

w = Canvas(root, width=poleX, height=maxY, background="white")
w.pack()

w1 = poleX/11
h1 = maxY/5
sdv = maxY/22      #сдвиг окон сверху


'''
window1 = w.create_rectangle(0, 0+sdv, w1, h1+sdv, fill="orange")
window2 = w.create_rectangle(w1, 0+sdv, 2*w1, h1+sdv, fill="orange")
window3 = w.create_rectangle(2*w1, 0+sdv, 3*w1, h1+sdv, fill="orange")
window4 = w.create_rectangle(3*w1, 0+sdv, 4*w1, h1+sdv, fill="orange")
window5 = w.create_rectangle(4*w1, 0+sdv, 5*w1, h1+sdv, fill="orange")
window6 = w.create_rectangle(5*w1, 0+sdv, 6*w1, h1+sdv, fill="orange")
window7 = w.create_rectangle(6*w1, 0+sdv, 7*w1, h1+sdv, fill="orange")
window8 = w.create_rectangle(7*w1, 0+sdv, 8*w1, h1+sdv, fill="orange")
window9 = w.create_rectangle(8*w1, 0+sdv, 9*w1, h1+sdv, fill="orange")
window10 = w.create_rectangle(9*w1, 0+sdv, 10*w1, h1+sdv, fill="orange")
'''
for i in range (0,31):
    window1 = w.create_rectangle(0, i*h1+sdv, w1, (i+1)*h1+sdv, fill="orange")
    window2 = w.create_rectangle(w1, i*h1+sdv, 2*w1, (i+1)*h1+sdv, fill="orange")
    window3 = w.create_rectangle(2*w1, i*h1+sdv, 3*w1, (i+1)*h1+sdv, fill="orange")
    window4 = w.create_rectangle(3*w1, i*h1+sdv, 4*w1, (i+1)*h1+sdv, fill="orange")
    window5 = w.create_rectangle(4*w1, i*h1+sdv, 5*w1, (i+1)*h1+sdv, fill="orange")
    window6 = w.create_rectangle(5*w1, i*h1+sdv, 6*w1, (i+1)*h1+sdv, fill="orange")
    window7 = w.create_rectangle(6*w1, i*h1+sdv, 7*w1, (i+1)*h1+sdv, fill="orange")
    window8 = w.create_rectangle(7*w1, i*h1+sdv, 8*w1, (i+1)*h1+sdv, fill="orange")
    window9 = w.create_rectangle(8*w1, i*h1+sdv, 9*w1, (i+1)*h1+sdv, fill="orange")
    window10 = w.create_rectangle(9*w1, i*h1+sdv, 10*w1, (i+1)*h1+sdv, fill="orange")

#window11 = w.create_rectangle(0, h1+sdv, w1, 2*h1+sdv, fill="red")
w.create_text(maxX/20, 16, text="Стебель", fill="green", font=('Times New Roman', 16))
w.create_text(maxX/7.2, 16, text="Корень", fill="green", font=('Times New Roman', 16))
w.create_text(maxX*3/13.3, 16, text="Листья", fill="green", font=('Times New Roman', 16))
w.create_text(maxX*3/13.3, 32, text="расположение", fill="green", font=('Times New Roman', 16))

w.create_text(maxX*3/9.5, 16, text="Лист форма", fill="green", font=('Times New Roman', 16))
w.create_text(maxX*3/7.3, 16, text="Край листа", fill="green", font=('Times New Roman', 16))
w.create_text(maxX*3/6, 16, text="Соцветие", fill="green", font=('Times New Roman', 16))
w.create_text(maxX*3/5.1, 16, text="Цветок форма", fill="green", font=('Times New Roman', 16))
w.create_text(maxX*3/4.4, 16, text="Венчик", fill="green", font=('Times New Roman', 16))
w.create_text(maxX*3/3.9, 16, text="Плод", fill="green", font=('Times New Roman', 16))
w.create_text(maxX-maxX/7, 16, text="Особенности", fill="green", font=('Times New Roman', 16))



# Начинаем рисовать графики

global cx
global с1
сx=0


w.create_line(1000, 180, 1000, 60, fill='green',  # коорд относительно окна
                width=5, arrow=LAST, dash=(10,2),
                activefill='lightgreen',
                arrowshape="10 20 10")



#w.create_text(230, 25, text="Прямоугольник")#,
кирпич1 = w.create_rectangle(maxX-maxX/32-100, maxY/22, maxX-maxX/32-50, maxY/32+100, fill='white',outline="black")  # коорд относительно окна
#w.create_text(380, 25, text="<- Блок в лево")#, font=('Arial Bold', 10))
кирпич2 = w.create_rectangle(maxX-maxX/32-50, maxY/22, maxX-maxX/32, maxY/32+100, fill='white',outline="black")
#w.create_text(480, 25, text="Блок в право ->")#, font=('Arial Bold', 10))
x0=int(maxX-maxX/32)
x1=int(maxX-maxX/32)
w.create_line(x0-75, 70, x1-75, 120, fill='black',  # коорд относительно окна
                width=3, arrow=LAST, #dash=(10,2),
                #activefill='lightgreen',
                arrowshape="10 20 10")
w.create_line(x0-25, 120, x1-25, 70, fill='black',  # коорд относительно окна
                width=3, arrow=LAST, #dash=(10,2),
                #activefill='lightgreen',
                arrowshape="10 20 10")



def getXY(event):
    global cx
    global c1
    getx=event.x #оординаты относительно окна (относительно экрана   getx=event.x_root)
    gety=event.y #оординаты относительно окна (относительно экрана   gety=event.y_root)
    #getx=event.x_root        #координата x сохраняется в переменной getx
    #gety=event.y_root        #y  соответственно в gety
                            #ВНИМАНИЕ координаты отсчитываются относительно ЭКРАНА.
                            #Если требуется отсчет относительно ОКНА, нужно использовать getx=event.x 
                            #для y соответственно
                           
    if 10<gety<40:
        if 180<getx<280: # Инверсия
            c1=cx
            i=0
            for i in range (poleX):    
                 w.create_line(i, pls[i+int(c1*poleX)]+maxY/2, i+1, pls[i+1+int(c1*poleX)]+maxY/2, fill='white')  # коорд относительно окна
            i=0
            for i in range (n-1):  
                 pls[i]=-pls[i]  # Инверсия
            i=0
            for i in range (poleX):
                 w.create_line(i, pls[i+int(cx*poleX)]+maxY/2, i+1, pls[i+1+int(cx*poleX)]+maxY/2, fill='black')  # коорд относительно окна

        if 330<getx<430: # Блок в лево (поле блока: 330,10,430,40)
            c1=cx
            cx=cx-1
            if cx<=0:
                cx=0
                w.create_line(400, 25, 350, 25, fill='gray',  # коорд относительно окна
                width=3, arrow=LAST, #dash=(10,2),
                #activefill='lightgreen',
                arrowshape="10 20 10")
            
            w.create_line(450, 25, 500, 25, fill='black',  # коорд относительно окна
                width=3, arrow=LAST, #dash=(10,2),
                #activefill='lightgreen',
                arrowshape="10 20 10")
            #print('x',getx)
            #print('с1',c1)
            #print('с',cx)
            i=0
            for i in range (poleX):
                 w.create_line(i, pls[i+int(c1*poleX)]+maxY/2, i+1, pls[i+1+int(c1*poleX)]+maxY/2, fill='white')  # коорд относительно окна

            i=0
            for i in range (poleX):
                 w.create_line(i, pls[i+int(cx*poleX)]+maxY/2, i+1, pls[i+1+int(cx*poleX)]+maxY/2, fill='black')  # коорд относительно окна
        if 430<getx<530: # Блок в право (поле блока: 430,10,530,40)
            c1=cx
            cx=cx+1
            if cx>=8:
                cx=8
                w.create_line(450, 25, 500, 25, fill='gray',  # коорд относительно окна
                width=3, arrow=LAST, #dash=(10,2),
                #activefill='lightgreen',
                arrowshape="10 20 10")

            #print('с1',c1)
            #print('с',cx)

            w.create_line(400, 25, 350, 25, fill='black',  # коорд относительно окна
            width=3, arrow=LAST, #dash=(10,2),
            #activefill='lightgreen',
            arrowshape="10 20 10") 

            i=0
            for i in range (poleX):
                 w.create_line(i, pls[i+int(c1*poleX)]+maxY/2, i+1, pls[i+1+int(c1*poleX)]+maxY/2, fill='white')  # коорд относительно окна

            i=0
            for i in range (poleX):
                 w.create_line(i, pls[i+int(cx*poleX)]+maxY/2, i+1, pls[i+1+int(cx*poleX)]+maxY/2, fill='black')  # коорд относительно окна



#print(c)
global cx
global c1

cx=0
root.bind('<Button-1>', getXY)

root.mainloop()