python3+PyQt5实现拖放

来源:互联网 发布:python用turtle画椭圆 编辑:程序博客网 时间:2024/05/13 21:12

本文是对《Python Qt GUI快速编程》的第10章的例子拖放用Python3+PyQt5进行改写,对图表列表,表格等进行相互拖放,基本原理雷同,均采用setAcceptDrops(True)和setDragEnabled(True)。

#!/usr/bin/env python3import osimport sysfrom PyQt5.QtCore import Qtfrom PyQt5.QtWidgets import (QApplication, QDialog, QHBoxLayout,        QListWidget, QListWidgetItem, QSplitter, QTableWidget)from PyQt5.QtGui import QIconclass Form(QDialog):    def __init__(self, parent=None):        super(Form, self).__init__(parent)        listWidget = QListWidget()        listWidget.setAcceptDrops(True)        listWidget.setDragEnabled(True)        path = os.path.dirname(__file__)        for image in sorted(os.listdir(os.path.join(path, "images"))):            if image.endswith(".png"):                item = QListWidgetItem(image.split(".")[0].capitalize())                item.setIcon(QIcon(os.path.join(path,                                   "images/{0}".format(image))))                listWidget.addItem(item)        iconListWidget = QListWidget()        iconListWidget.setAcceptDrops(True)        iconListWidget.setDragEnabled(True)        iconListWidget.setViewMode(QListWidget.IconMode)                          tableWidget = QTableWidget()        tableWidget.setRowCount(5)        tableWidget.setColumnCount(2)        tableWidget.setHorizontalHeaderLabels(["Column #1", "Column #2"])        tableWidget.setAcceptDrops(True)        tableWidget.setDragEnabled(True)        splitter = QSplitter(Qt.Horizontal)        splitter.addWidget(listWidget)        splitter.addWidget(iconListWidget)        splitter.addWidget(tableWidget)        layout = QHBoxLayout()        layout.addWidget(splitter)        self.setLayout(layout)        self.setWindowTitle("Drag and Drop")if __name__ == "__main__":    app = QApplication(sys.argv)    form = Form()    form.show()    app.exec_()

运行结果:
这里写图片描述

0 0
原创粉丝点击