首页 > 编程 > Python > 正文

python3+PyQt5实现拖放功能

2020-02-22 23:51:14
字体:
来源:转载
供稿:网友

本文是对《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_()

运行结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林站长站。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表