[GUI en Python] PyQt5-Glisser-déposer-

Dernière fois suite

Drag & drop Je vais résumer grossièrement ce site en japonais.

[Glisser-déposer sur le bouton]

Simple_drag_and_drop.py


#!/usr/bin/python3
# -*- coding: utf-8 -*-


import sys
from PyQt5.QtWidgets import (QPushButton, QWidget, 
    QLineEdit, QApplication)

#Hériter de QPushButton
class Button(QPushButton):
  
    def __init__(self, title, parent):
        super().__init__(title, parent)
        
        #Permet de déposer les boutons
        self.setAcceptDrops(True)
        

    def dragEnterEvent(self, e):
        
        #Définir le format de données déplaçables
        if e.mimeData().hasFormat('text/plain'):
            e.accept()
        else:
            e.ignore() 

    def dropEvent(self, e):
        
        #Permuter les libellés des boutons lorsqu'ils sont déposés
        self.setText(e.mimeData().text()) 


class Example(QWidget):
  
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
        
    def initUI(self):

        edit = QLineEdit('', self)
        #Faites-le glisser
        edit.setDragEnabled(True)
        edit.move(30, 65)

        button = Button("Button", self)
        button.move(250, 65)
        
        self.setWindowTitle('Simple drag & drop')
        self.setGeometry(300, 300, 300, 150)


if __name__ == '__main__':
  
    app = QApplication(sys.argv)
    ex = Example()
    ex.show()
    app.exec_()

Etat initial dradro_syoki.png

Après glisser-déposer dradro_after.png

[Faites glisser et déposez le bouton]

Drag&drop_a_button_widget.py


#!/usr/bin/python3
# -*- coding: utf-8 -*-


import sys
from PyQt5.QtWidgets import QPushButton, QWidget, QApplication
from PyQt5.QtCore import Qt, QMimeData
from PyQt5.QtGui import QDrag


class Button(QPushButton):
  
    def __init__(self, title, parent):
        super().__init__(title, parent)
        

    def mouseMoveEvent(self, e):

        #Seul le clic droit peut être glissé et déposé
        if e.buttons() != Qt.RightButton:
            return

        #Remplacez le format de données à glisser-déposer
        mimeData = QMimeData()

        drag = QDrag(self)
        drag.setMimeData(mimeData)
        #Réglez le coin supérieur gauche du bouton à la position de chute
        drag.setHotSpot(e.pos() - self.rect().topLeft())
        dropAction = drag.exec_(Qt.MoveAction)


    def mousePressEvent(self, e):
      
        #Changement de couleur du bouton lorsque vous appuyez sur le bouton
        QPushButton.mousePressEvent(self, e)
        
        #Appuyez sur l'affichage sur la console lorsque vous cliquez dessus
        if e.button() == Qt.LeftButton:
            print('press')


class Example(QWidget):
  
    def __init__(self):
        super().__init__()

        self.initUI()
        
        
    def initUI(self):

        self.setAcceptDrops(True)

        self.button = Button('Button', self)
        self.button.move(100, 65)

        self.setWindowTitle('Click or Move')
        self.setGeometry(300, 300, 280, 150)
        

    def dragEnterEvent(self, e):
      
        e.accept()
        

    def dropEvent(self, e):

        #Placez le bouton à la position de la souris après avoir fait glisser
        position = e.pos()
        self.button.move(position)

        #Eh bien, je ne sais pas
        e.setDropAction(Qt.MoveAction)
        e.accept()
        

if __name__ == '__main__':
  
    app = QApplication(sys.argv)
    ex = Example()
    ex.show()
    app.exec_()  

drag_drop_middle.png  drag_drop_after.png

La prochaine fois essaiera approximativement Painting.

Recommended Posts

[GUI en Python] PyQt5-Glisser-déposer-
Construction d'interface graphique heureuse avec électron et python
Faites glisser et déposez un fichier local avec Selenium (Python)
Programmation avec Python et Tkinter
Chiffrement et déchiffrement avec Python
Python et matériel - Utilisation de RS232C avec Python -
[GUI en Python] PyQt5-Layout management-
python avec pyenv et venv
[GUI avec Python] PyQt5-Préparation-
Fonctionne avec Python et R
[GUI avec Python] PyQt5 -Paint-
Afficher et prendre des images de caméra Web avec Python Kivy [GUI]
Communiquez avec FX-5204PS avec Python et PyUSB
Briller la vie avec Python et OpenCV
Robot fonctionnant avec Arduino et python
Installez Python 2.7.9 et Python 3.4.x avec pip.
Réseau neuronal avec OpenCV 3 et Python 3
Modulation et démodulation AM avec python
Scraping avec Node, Ruby et Python
[GUI avec Python] PyQt5 -Widget II-
Faisons une interface graphique avec python.
Grattage avec Python, Selenium et Chromedriver
Grattage avec Python et belle soupe
[GUI avec Python] PyQt5-La première étape-
Encodage et décodage JSON avec python
Introduction à Hadoop et MapReduce avec Python
Lire et écrire NetCDF avec Python
J'ai joué avec PyQt5 et Python3
Lire et écrire du CSV avec Python
Intégration multiple avec Python et Sympy
J'ai essayé de créer une interface graphique à trois yeux côte à côte avec Python et Tkinter
[GUI avec Python] PyQt5-Widget personnalisé-
[GUI en Python] Menu PyQt5 et barre d'outils-
Coexistence de Python2 et 3 avec CircleCI (1.0)
Jeu Sugoroku et jeu d'addition avec Python
Modulation et démodulation FM avec Python
Communiquez entre Elixir et Python avec gRPC
Calculer et afficher le poids standard avec python
Surveiller les pannes de Mojo avec Python et Skype
Modulation et démodulation FM avec Python Partie 3
[Automation] Manipulez la souris et le clavier avec Python
Authentification sans mot de passe avec RDS et IAM (Python)
Utilisation de Python et MeCab avec Azure Databricks
POSTER diversement avec Python et recevoir avec Flask
Exécuter la traduction Google et la traduction DeepL avec l'interface graphique
Fractal pour faire et jouer avec Python
Un mémo contenant Python2.7 et Python3 dans CentOS
Utilisez PIL ou Pillow avec Cygwin Python
Créer et décrypter du code César avec python
CentOS 6.4, Python 2.7.3, Apache, mod_wsgi, Django
Lire et écrire des fichiers JSON avec Python
Gérer les "années et mois" en Python
J'ai installé et utilisé Numba avec Python3.5
Analyse des tweets avec Python, Mecab et CaboCha
Lier Python et JavaScript avec le notebook Jupyter
Surveillance du trafic avec Kibana, ElasticSearch et Python
Modulation et démodulation FM avec Python Partie 2
Crypter avec Ruby (Rails) et décrypter avec Python
Téléchargez facilement des mp3 / mp4 avec python et youtube-dl!