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实现判断一个字符串是否包含子串的方法总结
Nov 21 Python
python写入已存在的excel数据实例
May 03 Python
儿童编程python入门
May 08 Python
详解python中Numpy的属性与创建矩阵
Sep 10 Python
Python利用itchat库向好友或者公众号发消息的实例
Feb 21 Python
django之自定义软删除Model的方法
Aug 14 Python
在Django下创建项目以及设置settings.py教程
Dec 03 Python
Mysql数据库反向生成Django里面的models指令方式
May 18 Python
Python调用OpenCV实现图像平滑代码实例
Jun 19 Python
Python系统公网私网流量监控实现流程
Nov 23 Python
python3 kubernetes api的使用示例
Jan 12 Python
python游戏开发之pygame实现接球小游戏
Apr 22 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
重料打造自己的“宝马”---第三代
2021/03/02 无线电
ThinkPHP惯例配置文件详解
2014/07/14 PHP
php递归遍历多维数组的方法
2015/04/18 PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
2019/04/16 PHP
封装好的省市地区联动控件附下载
2007/08/13 Javascript
js本身的局限性 别让javascript做太多事
2010/03/23 Javascript
Jquery图片滚动与幻灯片的实例代码
2013/04/08 Javascript
主页面中的两个iframe实现鼠标拖动改变其大小
2013/04/16 Javascript
jQuery lazyLoad图片延迟加载插件的优化改造方法分享
2013/08/13 Javascript
js仿支付宝多方框输入支付密码效果
2016/09/27 Javascript
浅谈jQuery添加的HTML,JS失效的问题
2016/10/05 Javascript
Javascript 引擎工作机制详解
2016/11/30 Javascript
javascript ES6中箭头函数注意细节小结
2017/02/17 Javascript
javascript中this用法实例详解
2017/04/06 Javascript
Javascript继承机制详解
2017/05/30 Javascript
JavaScript的数据类型转换原则(干货)
2018/03/15 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
2018/10/12 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
2019/05/22 Javascript
vue中根据时间戳判断对应的时间(今天 昨天 前天)
2019/12/20 Javascript
python数据结构树和二叉树简介
2014/04/29 Python
python实现的登录和操作开心网脚本分享
2014/07/09 Python
利用Python开发微信支付的注意事项
2016/08/19 Python
Python书单 不将就
2017/07/11 Python
使用Python & Flask 实现RESTful Web API的实例
2017/09/19 Python
浅谈Python2获取中文文件名的编码问题
2018/01/09 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
2018/02/26 Python
Python图像处理模块ndimage用法实例分析
2019/09/05 Python
opencv python在视屏上截图功能的实现
2020/03/05 Python
pycharm工具连接mysql数据库失败问题
2020/04/01 Python
美国女士内衣在线折扣商店:One Hanes Place
2019/03/24 全球购物
幼儿园毕业园长感言
2014/02/24 职场文书
敬老院活动总结
2014/04/28 职场文书
婚宴邀请函
2015/01/30 职场文书
工商行政处罚决定书
2015/06/24 职场文书
mysql拆分字符串作为查询条件的示例代码
2022/07/07 MySQL