fix: event system
This commit is contained in:
7
main.py
7
main.py
@@ -15,10 +15,13 @@ def main():
|
|||||||
trajectoryDrawer = TrajectoryDrawer('map.jpg')
|
trajectoryDrawer = TrajectoryDrawer('map.jpg')
|
||||||
trajectoryDrawer.on_complete_trajectory = onCompleteTrajectory
|
trajectoryDrawer.on_complete_trajectory = onCompleteTrajectory
|
||||||
trajectoryDrawer.show()
|
trajectoryDrawer.show()
|
||||||
|
trajectoryDrawer.wait()
|
||||||
|
onCompleteTrajectory(trajectoryDrawer.points)
|
||||||
|
|
||||||
def onCompleteTrajectory(points):
|
def onCompleteTrajectory(points):
|
||||||
print("I've got points. Here these: ")
|
yandexMap = YandexMap()
|
||||||
print(points)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
from time import sleep
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
import matplotlib.image as mpimg
|
import matplotlib.image as mpimg
|
||||||
from matplotlib.path import Path
|
from matplotlib.path import Path
|
||||||
@@ -18,6 +19,7 @@ class TrajectoryDrawer:
|
|||||||
self.ax.set_title('Нарисуйте траекторию движения (кликните для точек, Enter для завершения)')
|
self.ax.set_title('Нарисуйте траекторию движения (кликните для точек, Enter для завершения)')
|
||||||
self.ax.set_xlabel('X координата')
|
self.ax.set_xlabel('X координата')
|
||||||
self.ax.set_ylabel('Y координата')
|
self.ax.set_ylabel('Y координата')
|
||||||
|
self.closed = False
|
||||||
|
|
||||||
# Подключение обработчиков событий
|
# Подключение обработчиков событий
|
||||||
self.fig.canvas.mpl_connect('button_press_event', self.on_click)
|
self.fig.canvas.mpl_connect('button_press_event', self.on_click)
|
||||||
@@ -50,7 +52,7 @@ class TrajectoryDrawer:
|
|||||||
self.line.set_data(x_coords, y_coords)
|
self.line.set_data(x_coords, y_coords)
|
||||||
self.fig.canvas.draw()
|
self.fig.canvas.draw()
|
||||||
|
|
||||||
def complete_trajectory(self):
|
def complete_trajectory(self, *args):
|
||||||
if len(self.points) > 1:
|
if len(self.points) > 1:
|
||||||
print("Траектория завершена!")
|
print("Траектория завершена!")
|
||||||
print(f"Количество точек: {len(self.points)}")
|
print(f"Количество точек: {len(self.points)}")
|
||||||
@@ -59,9 +61,8 @@ class TrajectoryDrawer:
|
|||||||
print(f"Точка {i+1}: ({x:.2f}, {y:.2f})")
|
print(f"Точка {i+1}: ({x:.2f}, {y:.2f})")
|
||||||
|
|
||||||
# Можно сохранить координаты в файл
|
# Можно сохранить координаты в файл
|
||||||
# self.save_trajectory()
|
|
||||||
self.on_complete_trajectory(self.points)
|
|
||||||
self.destroy()
|
self.destroy()
|
||||||
|
self.closed = True
|
||||||
|
|
||||||
def clear_trajectory(self):
|
def clear_trajectory(self):
|
||||||
self.points = []
|
self.points = []
|
||||||
@@ -83,6 +84,10 @@ class TrajectoryDrawer:
|
|||||||
plt.tight_layout()
|
plt.tight_layout()
|
||||||
plt.show()
|
plt.show()
|
||||||
|
|
||||||
|
def wait(self):
|
||||||
|
while not self.closed:
|
||||||
|
sleep(0.1)
|
||||||
|
|
||||||
# Использование
|
# Использование
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
# Укажите путь к вашему изображению
|
# Укажите путь к вашему изображению
|
||||||
|
|||||||
@@ -8,13 +8,16 @@ from selenium import webdriver
|
|||||||
from selenium.webdriver.common.by import By
|
from selenium.webdriver.common.by import By
|
||||||
from selenium.webdriver.common.action_chains import ActionChains
|
from selenium.webdriver.common.action_chains import ActionChains
|
||||||
|
|
||||||
|
def generateURL(lat=49.103814, lon=55.794258, zoom=10):
|
||||||
|
return f"https://yandex.ru/maps/43/kazan/?ll={lat}%2C{lon}&z={zoom}"
|
||||||
|
|
||||||
class YandexMap:
|
class YandexMap:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
options = webdriver.ChromeOptions()
|
options = webdriver.ChromeOptions()
|
||||||
# options.add_experimental_option("detach", True)
|
# options.add_experimental_option("detach", True)
|
||||||
self.driver = webdriver.Chrome(options)
|
self.driver = webdriver.Chrome(options)
|
||||||
self.driver.get("https://yandex.ru/maps/43/kazan/?ll=49.103814%2C55.794258&z=10")
|
self.driver.get(generateURL())
|
||||||
sleep(5)
|
sleep(2)
|
||||||
|
|
||||||
action = ActionChains(self.driver)
|
action = ActionChains(self.driver)
|
||||||
|
|
||||||
@@ -31,10 +34,10 @@ class YandexMap:
|
|||||||
action.move_to_element_with_offset(html, 200, 200)
|
action.move_to_element_with_offset(html, 200, 200)
|
||||||
action.perform()
|
action.perform()
|
||||||
|
|
||||||
sleep(5)
|
sleep(1)
|
||||||
|
|
||||||
def savePhoto(self, filename: str) -> bytes:
|
def savePhoto(self, filename: str) -> bytes:
|
||||||
return self.driver.save_screenshot(filename)
|
return self.driver.save_screenshot(filename)
|
||||||
|
|
||||||
def destroy(self):
|
def destroy(self):
|
||||||
self.driver.close()
|
self.driver.close()
|
||||||
|
|||||||
Reference in New Issue
Block a user