# simple-qt5-graph-editor **Repository Path**: mirrors_lepy/simple-qt5-graph-editor ## Basic Information - **Project Name**: simple-qt5-graph-editor - **Description**: simple GUI app for drawing graphs, pyqt5 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-25 - **Last Updated**: 2025-07-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # simple-qt5-graph-editor simple GUI app for drawing graphs (pyqt5) Требования: Python 3.5, pyqt5 ``` pip install PyQt5 ``` Запуск приложения: ``` python3 ./graph_gui.py ``` - В режиме добавления/перемещения вершин (первая кнопка на панели инструментов, включен по умолчанию) по клику на холсте создаются вершины, существующие вершины перетаскиваются удерживанием мышью. Удерживая ```Control``` (```Command``` в OSX), можно выделить несколько вершин и переместить их вместе. Активные вершины подсвечиваются синим. - В режиме добавления ребер (вторая кнопка) первым кликом выделяется исходящая вершина (подсвечивается красным), вторым - входящая. - В режиме удаления вершин (третья кнопка) по клику удаляются вершины и связанные с ними ребра. - В режиме поиска маршрута (четвертая кнопка) первым кликом выделяется начальный узел, вторым - конечный. (Сейчас реализован только алгоритм Дейкстры для ориентированного графа, подсветка не делается, результат работы алгоритма выводится в консоль). - В любом режиме слайдер на панели инструментов позволяет увеличить/уменьшить размеры узлов графа для удобства выделения мышью или лучшего визуального разграничения близко находящихся вершин. Модели вершин и ребер находятся в отдельном файле VertexEdge.py. Модели могут использоваться в n-мерном пространстве: для обращения к атрибутам-координатам вершин можно использовать числовые индексы, а также псевдонимы (**Vertex.shortcut_names**). Атрибут ребра **directed** может быть использован для кастомизации отображения, в данной реализации каждое ребро является имплицитно ориентированным (порядком аргументов-вершин). **TODO:** ключ для запуска приложения в режиме неориентированного графа; доработка метода обхода; доработка визуализации (стрелочки). Длина ребра может быть вычислена как **abs(e)**. Вершина также может быть представлена как вектор, длина которого вычисляется как **abs(v)**.