python3+PyQt5实现拖放功能

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

#!/usr/bin/env python3

import os

import sys

from PyQt5.QtCore import Qt

from PyQt5.QtWidgets import (QApplication, QDialog, QHBoxLayout,

QListWidget, QListWidgetItem, QSplitter, QTableWidget)

from PyQt5.QtGui import QIcon

class 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_()

运行结果:

以上是 python3+PyQt5实现拖放功能 的全部内容, 来源链接: utcz.com/z/353984.html

回到顶部