[GUI in Python] PyQt5-Drag & Drop-

Letztes Mal wurde fortgesetzt

Drag & drop Ich werde diese Seite grob auf Japanisch zusammenfassen.

[Ziehen und Ablegen auf Schaltfläche]

Simple_drag_and_drop.py


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


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

#QPushButton erben
class Button(QPushButton):
  
    def __init__(self, title, parent):
        super().__init__(title, parent)
        
        #Ermöglicht das Löschen von Tasten
        self.setAcceptDrops(True)
        

    def dragEnterEvent(self, e):
        
        #Legen Sie das ziehbare Datenformat fest
        if e.mimeData().hasFormat('text/plain'):
            e.accept()
        else:
            e.ignore() 

    def dropEvent(self, e):
        
        #Tauschen Sie die Tastenbeschriftungen aus, wenn Sie sie fallen lassen
        self.setText(e.mimeData().text()) 


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

        edit = QLineEdit('', self)
        #Mach es ziehbar
        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_()

Ausgangszustand dradro_syoki.png

Nach Drag & Drop dradro_after.png

[Schaltfläche ziehen und ablegen]

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):

        #Nur ein Rechtsklick kann per Drag & Drop verschoben werden
        if e.buttons() != Qt.RightButton:
            return

        #Ersetzen Sie das zu ziehende und abzulegende Datenformat
        mimeData = QMimeData()

        drag = QDrag(self)
        drag.setMimeData(mimeData)
        #Stellen Sie den oberen linken Rand der Schaltfläche auf die abgesenkte Position
        drag.setHotSpot(e.pos() - self.rect().topLeft())
        dropAction = drag.exec_(Qt.MoveAction)


    def mousePressEvent(self, e):
      
        #Die Farbe der Taste ändert sich, wenn die Taste gedrückt wird
        QPushButton.mousePressEvent(self, e)
        
        #Drücken Sie die Anzeige auf der Konsole, wenn Sie mit der linken Maustaste klicken
        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):

        #Platzieren Sie die Schaltfläche nach dem Ziehen an der Mausposition
        position = e.pos()
        self.button.move(position)

        #Nun, ich weiß nicht
        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

Nächstes Mal wird Painting ungefähr versuchen.

Recommended Posts

[GUI in Python] PyQt5-Drag & Drop-
Fröhliche GUI-Konstruktion mit Elektron und Python
Ziehen Sie eine lokale Datei mit Selenium (Python) per Drag & Drop.
Programmieren mit Python und Tkinter
Ver- und Entschlüsselung mit Python
Python und Hardware-Verwenden von RS232C mit Python-
[GUI in Python] PyQt5-Layout-Management-
Python mit Pyenv und Venv
[GUI mit Python] PyQt5-Vorbereitung-
Funktioniert mit Python und R.
[GUI mit Python] PyQt5 -Paint-
Anzeigen und Aufnehmen von Webkamerabildern mit Python Kivy [GUI]
Kommunizieren Sie mit FX-5204PS mit Python und PyUSB
Leuchtendes Leben mit Python und OpenCV
Roboter läuft mit Arduino und Python
Installieren Sie Python 2.7.9 und Python 3.4.x mit pip.
Neuronales Netzwerk mit OpenCV 3 und Python 3
AM-Modulation und Demodulation mit Python
Scraping mit Node, Ruby und Python
[GUI mit Python] PyQt5 -Widget II-
Lassen Sie uns eine GUI mit Python erstellen.
Scraping mit Python, Selen und Chromedriver
Kratzen mit Python und schöner Suppe
[GUI mit Python] PyQt5-Der erste Schritt-
JSON-Codierung und -Decodierung mit Python
Hadoop-Einführung und MapReduce mit Python
Lesen und Schreiben von NetCDF mit Python
Ich habe mit PyQt5 und Python3 gespielt
Lesen und Schreiben von CSV mit Python
Mehrfachintegration mit Python und Sympy
Ich habe versucht, die Benutzeroberfläche neben Python und Tkinter dreiäugig zu gestalten
[GUI mit Python] PyQt5 -Custom Widget-
[GUI in Python] PyQt5-Menü und Symbolleiste-
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Sugoroku-Spiel und Zusatzspiel mit Python
FM-Modulation und Demodulation mit Python
Kommunizieren Sie mit gRPC zwischen Elixir und Python
Berechnen Sie das Standardgewicht und zeigen Sie es mit Python an
Überwachen Sie Mojo-Ausfälle mit Python und Skype
FM-Modulation und Demodulation mit Python Part 3
[Automatisierung] Bearbeiten Sie Maus und Tastatur mit Python
Passwortlose Authentifizierung mit RDS und IAM (Python)
Verwenden von Python und MeCab mit Azure Databricks
POST verschieden mit Python und empfange mit Flask
Führen Sie die Google-Übersetzung und die DeepL-Übersetzung mit der GUI aus
Fraktal zum Erstellen und Spielen mit Python
Ein Memo mit Python2.7 und Python3 in CentOS
Verwenden Sie PIL oder Pillow mit Cygwin Python
Erstellen und entschlüsseln Sie Caesar-Code mit Python
CentOS 6.4, Python 2.7.3, Apache, mod_wsgi, Django
Lesen und Schreiben von JSON-Dateien mit Python
Umgang mit "Jahren und Monaten" in Python
Ich habe Numba mit Python3.5 installiert und verwendet
Tweet-Analyse mit Python, Mecab und CaboCha
Verknüpfung von Python und JavaScript mit dem Jupiter-Notizbuch
Verkehrsüberwachung mit Kibana, ElasticSearch und Python
FM-Modulation und Demodulation mit Python Part 2
Mit Ruby (Rails) verschlüsseln und mit Python entschlüsseln
Laden Sie einfach mp3 / mp4 mit Python und youtube-dl herunter!