Qt designer python drag and drop

Перетаскивание (drag & drop) в PyQt5

Python 3 логотип

В этой части руководства по PyQt5, мы поговорим об операциях drag & drop. В графических интерфейсах, drag & drop – это действие клика на виртуальный объект и перетаскивания его в другое положение или в другой виртуальный объект.

Drag & drop – это часть графического пользовательского интерфейса. Операции перетаскивания позволяют пользователям делать сложные вещи интуитивно.

Обычно, мы можем перетаскивать две вещи: данные или некие графические объекты. Если мы перетаскиваем изображение из одного приложения в другое, мы перетаскиваем двоичные данные. Если мы перетаскиваем таблицу в Firefox и перемещаем её в другое место, мы перетаскиваем графический компонент.

Простое перетаскивание

В первом примере, у нас есть QLineEdit и QPushButton. Мы перетаскиваем текст из виджета строки редактирования и помещаем его в виджет кнопки. Метка кнопки изменится.

 Пример представляет простую операцию перетаскивания.
Для того, чтобы перетащить текст на виджет QPushButton, мы должны переопределить несколько методов. По этой причине, мы создаём собственный класс Button, который наследует класс QPushButton.
Мы разрешаем события перетаскивания для виджета.
Сначала мы переопределяем метод dragEnterEvent(). Мы сообщаем о типе данных, который мы допускаем. В нашем случае, это обычный текст.
Путём переопределения метода dropEvent, мы определяем, что мы должны делать после события перетаскивания. Здесь мы меняем текст виджета кнопки.
Виджет QLineEdit имеет встроенную поддержку операций перетаскивания. Все, что необходимо сделать – это вызвать метод setDragEnabled(), чтобы активировать её.

Перетаскивание виджета кнопки

В следующем примере, мы продемонстрируем, как перетаскивать виджет кнопки.

 В нашем примере кода, мы имеем QPushButton в окне. Если мы нажимаем на кнопку левой кнопкой мыши, в консоли печатается "press". С помощью перемещения кнопки с помощью правой кнопки мыши, мы выполняем операцию перетаскивания на виджет кнопки.
Мы создаём класс Button, который наследуется от QPushButton. Мы также переопределяем два метода: mouseMoveEvent() и mousePressEvent(). Метод mouseMoveEvent() – это место, где начинается операция перетаскивания.
Здесь мы решили, что мы можем выполнять перетаскивание только с помощью правой кнопки мыши. Левая кнопка мыши резервируется для нажатия на кнопку.
Создаётся объект QDrag. Класс обеспечивает поддержку перетаскивания данных, основанную на MIME-типе.
Метод start() начинает операцию drag & drop.
Мы печатаем "press" в консоли, если мы делаем клик левой кнопкой мыши на кнопку. Обратите внмание, что мы также вызываем метод mousePressEvent() в родителе. В противном случае, мы не увидим, что кнопка была нажата (можете попробовать поэкспериментировать).
В методе dropEvent(), мы определили, что произойдёт после того, как мы отпустим кнопку мыши и завершим операцию перетаскивания. Мы выясняем текущее положение указателя мыши и перемещаем кнопку соответствующим образом.
Мы указываем тип действия перетаскивания. В нашем случае, это действие перемещения.

Эта часть руководства PyQt5 была посвящена операциям drag & Drop.

Для вставки кода на Python в комментарий заключайте его в теги

  • Книги о Python
  • GUI (графический интерфейс пользователя)
  • Курсы Python
  • Модули
  • Новости мира Python
  • NumPy
  • Обработка данных
  • Основы программирования
  • Примеры программ
  • Типы данных в Python
  • Видео
  • Python для Web
  • Работа для Python-программистов

Источник

Читайте также:  Php проверка переменной на дату
Оцените статью