En este artículo, veremos cómo podemos arrastrar el texto del cuadro de número y soltarlo en la etiqueta personalizada dada usando el cursor. Arrastrar y soltar texto es similar a arrastrar y soltar una carpeta de un directorio a otro y cuando hacemos esto se genera otra copia.
Para poder hacer esto tenemos que hacer lo siguiente:
1. Cree un cuadro de número
2. Obtenga el objeto de edición de línea del cuadro de número
3. Habilite el arrastre al objeto de edición de línea
4. Cree una nueva clase para la etiqueta personalizada que hereda la clase QLabel
5. Permita que esta clase acepte gotas
6 Agregue un evento de arrastrar y soltar para que pueda recibir el texto y mostrarlo.
Sintaxis de la clase de etiqueta personalizada
class CustomLabel(QLabel): # constructor def __init__(self, title, parent): super().__init__(title, parent) # enabling accept drops self.setAcceptDrops(True) # creating drag enter event to receive text def dragEnterEvent(self, e): # checking format of the text if e.mimeData().hasFormat('text/plain'): # accepting the text e.accept() else: # rejecting the text e.ignore() # drop event to showing the text to label def dropEvent(self, e): # setting text to the label self.setText(e.mimeData().text())
A continuación se muestra la implementación.
# importing libraries from PyQt5.QtWidgets import * from PyQt5 import QtCore, QtGui from PyQt5.QtGui import * from PyQt5.QtCore import * import sys class Window(QMainWindow): def __init__(self): super().__init__() # setting title self.setWindowTitle("Python ") # setting geometry self.setGeometry(100, 100, 600, 400) # calling method self.UiComponents() # showing all the widgets self.show() # method for widgets def UiComponents(self): # creating spin box self.spin = QSpinBox(self) # setting geometry to spin box self.spin.setGeometry(100, 100, 250, 40) # setting prefix to spin self.spin.setPrefix("Prefix ") # setting suffix to spin self.spin.setSuffix(" Suffix") # get the line edit object line = self.spin.lineEdit() # set drag enable to true line.setDragEnabled(True) # creating a CustomLabel object label = CustomLabel('Drop here.', self) # setting geometry to the label label.setGeometry(100, 200, 300, 30) class CustomLabel(QLabel): # constructor def __init__(self, title, parent): super().__init__(title, parent) # enabling accept drops self.setAcceptDrops(True) # creating drag enter event to receive text def dragEnterEvent(self, e): # checking format of the text if e.mimeData().hasFormat('text / plain'): # accepting the text e.accept() else: # rejecting the text e.ignore() # drop event to showing the text to label def dropEvent(self, e): # setting text to the label self.setText(e.mimeData().text()) # create pyqt5 app App = QApplication(sys.argv) # create the instance of our Window window = Window() # start the app sys.exit(App.exec())
Producción :
Publicación traducida automáticamente
Artículo escrito por rakshitarora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA