找回密码
 立即注册
首页 python pyqt 查看内容
PyQt5拖放与任何现代GUI工具包一样,PyQt支持拖放。必须使用setDragEnabled(True)方法调用设置widget参数。然后应将自定义窗口小部件设置为接受带有setAcceptDrops(True)的拖放。


使用
PyQt5拖放

PyQt5拖放示例


将文本从输入字段拖到标签,标签将更新其文本。
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLineEdit, QLabel
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot
 
class App(QWidget):
 
    def __init__(self):
        super().__init__()
        self.title = 'PyQt5 drag and drop - pythonspot.com'
        self.left = 10
        self.top = 10
        self.width = 320
        self.height = 60
        self.initUI()
 
    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)
 
        editBox = QLineEdit('Drag this', self)
        editBox.setDragEnabled(True)
        editBox.move(10, 10)
        editBox.resize(100,32)
 
        button = CustomLabel('Drop here.', self)
        button.move(130,15)
 
        self.show()
 
    @pyqtSlot()
    def on_click(self):
        print('PyQt5 button click')
 
class CustomLabel(QLabel):
 
    def __init__(self, title, parent):
        super().__init__(title, parent)
        self.setAcceptDrops(True)
 
    def dragEnterEvent(self, e):
        if e.mimeData().hasFormat('text/plain'):
            e.accept()
        else:
            e.ignore()
 
    def dropEvent(self, e):
        self.setText(e.mimeData().text())
 
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())
使用调用QLineEdit()创建文本框。创建一个接受拖放的自定义类(CustomLabel)。这两个事件都被定义为方法,并在事件发生时执行其逻辑。
分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册