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中的高级数据结构详解
Mar 27 Python
Python使用正则匹配实现抓图代码分享
Apr 02 Python
PYTHON压平嵌套列表的简单实现
Jun 08 Python
python爬虫面试宝典(常见问题)
Mar 02 Python
用tensorflow构建线性回归模型的示例代码
Mar 05 Python
TensorFlow用expand_dim()来增加维度的方法
Jul 26 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
Apr 11 Python
详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
Apr 01 Python
python中怎么表示空值
Jun 19 Python
python os模块在系统管理中的应用
Jun 22 Python
pytorch中的weight-initilzation用法
Jun 24 Python
解决python对齐错误的方法
Jul 16 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
PHP使用array_merge重新排列数组下标的方法
2015/07/22 PHP
laravel按天、按小时,查询数据的实例
2019/10/09 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
2019/10/10 PHP
在laravel5.2中实现点击用户头像更改头像的方法
2019/10/14 PHP
jquery api参考 visualjquery 中国线路 速度快
2007/11/30 Javascript
jquery formValidator插件ajax验证 内容不做任何修改再离开提示错误的bug解决方法
2013/01/04 Javascript
js将当前时间格式转换成时间搓(自写)
2013/09/26 Javascript
JS获取数组最大值、最小值及长度的方法
2015/11/24 Javascript
jquery利用拖拽方式在图片上添加热链接
2015/11/24 Javascript
node中koa中间件机制详解
2017/08/22 Javascript
JavaScript+CSS相册特效实例代码
2017/09/07 Javascript
浅谈React Event实现原理
2018/09/20 Javascript
详解vue-cli+es6引入es5写的js(两种方法)
2019/04/19 Javascript
详解VScode编辑器vue环境搭建所遇问题解决方案
2019/04/26 Javascript
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
2019/05/30 NodeJs
JS如何调用WebAssembly编译出来的.wasm文件
2020/11/05 Javascript
python 简单的多线程链接实现代码
2016/08/28 Python
python编程实现希尔排序
2017/04/13 Python
Python正则表达式常用函数总结
2017/06/24 Python
python爬虫获取淘宝天猫商品详细参数
2020/06/23 Python
Python使用pyodbc访问数据库操作方法详解
2018/07/05 Python
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
Python递归函数实例讲解
2019/02/27 Python
基于python进行抽样分布描述及实践详解
2019/09/02 Python
python3.x 生成3维随机数组实例
2019/11/28 Python
flask利用flask-wtf验证上传的文件的方法
2020/01/17 Python
Django后端分离 使用element-ui文件上传方式
2020/07/12 Python
python中绕过反爬虫的方法总结
2020/11/25 Python
Python self用法详解
2020/11/28 Python
群胜软件Java笔试题
2012/09/29 面试题
Java程序员面试题
2016/09/27 面试题
秋季校运动会广播稿
2014/02/23 职场文书
幼儿园教师获奖感言
2014/03/11 职场文书
献爱心活动总结
2014/05/07 职场文书
MySQL 隔离数据列和前缀索引的使用总结
2021/05/14 MySQL
MySQL实现配置主从复制项目实践
2022/03/31 MySQL