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系统监控模块psutil功能与经典用法分析
May 24 Python
Flask之flask-script模块使用
Jul 26 Python
selenium+python自动化测试之鼠标和键盘事件
Jan 23 Python
Pyqt5 基本界面组件之inputDialog的使用
Jun 25 Python
python networkx 包绘制复杂网络关系图的实现
Jul 10 Python
在django admin中添加自定义视图的例子
Jul 26 Python
python采集百度搜索结果带有特定URL的链接代码实例
Aug 30 Python
python如何把字符串类型list转换成list
Feb 18 Python
Django Session和Cookie分别实现记住用户登录状态操作
Jul 02 Python
python实现MySQL指定表增量同步数据到clickhouse的脚本
Feb 26 Python
Python读写Excel表格的方法
Mar 02 Python
python图片灰度化处理的几种方法
Jun 23 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中常用数组处理方法实例分析
2008/08/30 PHP
php查找指定目录下指定大小文件的方法
2014/11/28 PHP
slice函数的用法 之不错的应用
2006/12/29 Javascript
几个javascript操作word的参考代码
2009/10/26 Javascript
理解Javascript_11_constructor实现原理
2010/10/18 Javascript
Javascript中产生固定结果的函数优化技巧
2013/01/16 Javascript
javasciprt下jquery函数$.post执行无响应的解决方法
2014/03/13 Javascript
jquery easyui 结合jsp简单展现table数据示例
2014/04/18 Javascript
javascript框架设计读书笔记之种子模块
2014/12/02 Javascript
Javascript数组与字典用法分析
2014/12/13 Javascript
js中hash和ico的关联分析
2015/02/05 Javascript
纯原生js实现table表格的增删
2017/01/05 Javascript
xmlplus组件设计系列之图标(ICON)(1)
2017/05/05 Javascript
JavaScript实现兼容IE6的收起折叠与展开效果实例
2017/09/20 Javascript
react-native组件中NavigatorIOS和ListView结合使用的方法
2017/09/30 Javascript
jQuery插件artDialog.js使用与关闭方法示例
2017/10/09 jQuery
使用Vue中 v-for循环列表控制按钮隐藏显示功能
2019/04/23 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
2019/08/22 Javascript
vue点击按钮动态创建与删除组件功能
2019/12/29 Javascript
简单了解JS打开url的方法
2020/02/21 Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
2020/04/11 Javascript
[48:02]Ti4循环赛第三日 VG vs Liquid和NEWBEE vs DK
2014/07/12 DOTA
[56:35]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第二局
2016/02/27 DOTA
python3简单实现微信爬虫
2015/04/09 Python
Window10+Python3.5安装opencv的教程推荐
2018/04/02 Python
在python tkinter界面中添加按钮的实例
2020/03/04 Python
python输出国际象棋棋盘的实例分享
2020/11/26 Python
Python 实现集合Set的示例
2020/12/21 Python
美国领先的水果篮送货公司和新鲜水果供应商:The Fruit Company
2018/02/13 全球购物
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
Currentbody德国站:健康与美容技术专家
2020/04/05 全球购物
会计专业应届生自荐信
2014/02/07 职场文书
2014年医德医风工作总结
2014/11/13 职场文书
Redis6.0搭建集群Redis-cluster的方法
2021/05/08 Redis
MySQL 查询速度慢的原因
2021/05/25 MySQL
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
2021/06/04 Oracle