Untitled
unknown
plain_text
2 years ago
8.5 kB
5
Indexable
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()
Editor is loading...