Untitled
unknown
plain_text
2 years ago
8.5 kB
6
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...