/GraphEditor

Desktop application for creating and editing an acyclic graph (including the shortest path search using the Dijkstra's algorithm)

Primary LanguagePython

Draw a Graph

Требования: Python3, PyQt 5.15

Запуск приложения: python3 main.py

Приложение работает в нескольких режимах, которые включаются кнопками на верхней панели инструментов:

  • Режим добавления и перемещения узлов по холсту. Первая кнопка(значок круга) на панели инструментов, включен по умолчанию. По клику на хосте создаются вершины, удержанием мыши перетаскиваются уже созданные. Зажав кнопку Shift-R, можно выделить несколько вершин и перемещать их группой. (выделенные подсвечиваются синим цветом)

  • Режим добавления неориентированных ребер(вторая кнопка - значок линии). Первым кликом выбирается начальная вершина (будет подсвечена красным), вторым кликом - конечная.

  • Режим добавления ориентированных ребер(третья кнопка - значок стрелки). Порядок действий аналогичен второму режиму, добавляется указательная стрелка для ребра.

  • Режим удаления вершин(четвертая кнопка - значок корзины). По клику на определенной вершине происходит удаления вершины и связанных с ней ребёр.

  • Режим поиска кратчайшего расстояния между двумя вершинами (пятая кнопка - значок увеличительного стекла). Первым кликом выбирается исходная вершина пути, вторым - конечная вершина. (Происходит подсветка наименьшего пути. Реализован алгоритм Дейкстра для ориентированного графа)

Слайдер на панели инструментов дает возможность в любом режиме увеличивать/уменьшать размеры вершин и стрелок для более удобного выделения мышью или разграничения тесно находящихся вершин.