From afd54c55f045078eedd107747097e006b001e2b2 Mon Sep 17 00:00:00 2001 From: russian_proger Date: Sat, 20 Sep 2025 23:34:40 +0300 Subject: [PATCH] fix: event system --- main.py | 7 +++++-- trajectory_drawer.py | 11 ++++++++--- yandex_map.py | 11 +++++++---- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/main.py b/main.py index d7462e1..5cec3a2 100644 --- a/main.py +++ b/main.py @@ -15,10 +15,13 @@ def main(): trajectoryDrawer = TrajectoryDrawer('map.jpg') trajectoryDrawer.on_complete_trajectory = onCompleteTrajectory trajectoryDrawer.show() + trajectoryDrawer.wait() + onCompleteTrajectory(trajectoryDrawer.points) def onCompleteTrajectory(points): - print("I've got points. Here these: ") - print(points) + yandexMap = YandexMap() + + if __name__ == "__main__": main() \ No newline at end of file diff --git a/trajectory_drawer.py b/trajectory_drawer.py index 52677c5..262597b 100644 --- a/trajectory_drawer.py +++ b/trajectory_drawer.py @@ -1,3 +1,4 @@ +from time import sleep import matplotlib.pyplot as plt import matplotlib.image as mpimg from matplotlib.path import Path @@ -18,6 +19,7 @@ class TrajectoryDrawer: self.ax.set_title('Нарисуйте траекторию движения (кликните для точек, Enter для завершения)') self.ax.set_xlabel('X координата') self.ax.set_ylabel('Y координата') + self.closed = False # Подключение обработчиков событий 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.fig.canvas.draw() - def complete_trajectory(self): + def complete_trajectory(self, *args): if len(self.points) > 1: print("Траектория завершена!") print(f"Количество точек: {len(self.points)}") @@ -59,9 +61,8 @@ class TrajectoryDrawer: print(f"Точка {i+1}: ({x:.2f}, {y:.2f})") # Можно сохранить координаты в файл - # self.save_trajectory() - self.on_complete_trajectory(self.points) self.destroy() + self.closed = True def clear_trajectory(self): self.points = [] @@ -83,6 +84,10 @@ class TrajectoryDrawer: plt.tight_layout() plt.show() + def wait(self): + while not self.closed: + sleep(0.1) + # Использование if __name__ == "__main__": # Укажите путь к вашему изображению diff --git a/yandex_map.py b/yandex_map.py index fd901cc..03ef96c 100644 --- a/yandex_map.py +++ b/yandex_map.py @@ -8,13 +8,16 @@ from selenium import webdriver from selenium.webdriver.common.by import By 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: def __init__(self): options = webdriver.ChromeOptions() # options.add_experimental_option("detach", True) self.driver = webdriver.Chrome(options) - self.driver.get("https://yandex.ru/maps/43/kazan/?ll=49.103814%2C55.794258&z=10") - sleep(5) + self.driver.get(generateURL()) + sleep(2) action = ActionChains(self.driver) @@ -31,10 +34,10 @@ class YandexMap: action.move_to_element_with_offset(html, 200, 200) action.perform() - sleep(5) + sleep(1) def savePhoto(self, filename: str) -> bytes: return self.driver.save_screenshot(filename) - + def destroy(self): self.driver.close()