python3+PyQt5实现拖放功能


Posted in Python onApril 24, 2018

本文是对《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实现拖放功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
Jul 12 Python
在Windows中设置Python环境变量的实例讲解
Apr 28 Python
CentOS7下python3.7.0安装教程
Jul 30 Python
python使用response.read()接收json数据的实例
Dec 19 Python
selenium+python自动化测试之鼠标和键盘事件
Jan 23 Python
使用python实现滑动验证码功能
Aug 05 Python
Django CBV与FBV原理及实例详解
Aug 12 Python
Python处理session的方法整理
Aug 29 Python
Python使用微信接入图灵机器人过程解析
Nov 04 Python
通过celery异步处理一个查询任务的完整代码
Nov 19 Python
Pyinstaller 打包发布经验总结
Jun 02 Python
Python实现在线批量美颜功能过程解析
Jun 10 Python
python3+PyQt5使用数据库表视图
Apr 24 #Python
python3+PyQt5使用数据库窗口视图
Apr 24 #Python
python下解压缩zip文件并删除文件的实例
Apr 24 #Python
python 删除指定时间间隔之前的文件实例
Apr 24 #Python
对python 各种删除文件失败的处理方式分享
Apr 24 #Python
Python向Excel中插入图片的简单实现方法
Apr 24 #Python
Python 通配符删除文件的实例
Apr 24 #Python
You might like
超神学院:鹤熙已踏入神圣领域,实力不比凯莎弱
2020/03/02 国漫
用PHP动态生成虚拟现实VRML网页
2006/10/09 PHP
利用static实现表格的颜色隔行显示的代码
2007/09/02 PHP
PHP中的函数嵌套层数限制分析
2011/06/13 PHP
php实现将上传word文件转为html的方法
2015/06/03 PHP
JavaScript 空位补零实现代码
2010/02/26 Javascript
关于javascript中this关键字(翻译+自我理解)
2010/10/20 Javascript
jQuery获取注册信息并提示实现代码
2013/04/21 Javascript
JavaScript实现存储HTML字符串示例
2014/04/21 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
2014/10/10 Javascript
简单谈谈json跨域
2016/03/13 Javascript
jQuery.deferred对象使用详解
2016/03/18 Javascript
Node.js readline模块与util模块的使用
2018/03/01 Javascript
从vue源码解析Vue.set()和this.$set()
2018/08/30 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
小程序跳转到的H5页面再跳转回跳小程序的方法
2020/03/06 Javascript
javascript实现数字时钟效果
2021/02/06 Javascript
Python实现删除文件但保留指定文件
2015/06/21 Python
Django查找网站项目根目录和对正则表达式的支持
2015/07/15 Python
Python代码解决RenderView窗口not found问题
2016/08/28 Python
python使用sqlite3时游标使用方法
2018/03/13 Python
python如何通过twisted实现数据库异步插入
2018/03/20 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
python对数组进行排序,并输出排序后对应的索引值方式
2020/02/28 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
2020/03/19 Python
python基于selenium爬取斗鱼弹幕
2021/02/20 Python
Nike西班牙官方网站:Nike.com (ES)
2017/10/30 全球购物
澳大利亚最受欢迎的女士度假服装:Kabana Shop
2020/10/10 全球购物
信息总监管理职责范本
2014/03/08 职场文书
班班通校本培训方案
2014/03/12 职场文书
班主任新年寄语
2014/04/04 职场文书
艾滋病宣传标语
2014/06/25 职场文书
大学生违纪检讨书300字
2014/10/25 职场文书
2015感人爱情寄语
2015/02/26 职场文书
2015年“七七卢沟桥事变”纪念活动总结
2015/03/24 职场文书
Python实现信息管理系统
2022/06/05 Python