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输出当前目录下index.html文件路径的方法
Apr 28 Python
python re模块findall()函数实例解析
Jan 19 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
Jun 01 Python
Python使用分布式锁的代码演示示例
Jul 30 Python
通过 Django Pagination 实现简单分页功能
Nov 11 Python
python小项目之五子棋游戏
Dec 26 Python
Python基础之字典常见操作经典实例详解
Feb 26 Python
Python openpyxl 插入折线图实例
Apr 17 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
Aug 07 Python
Python生成pdf目录书签的实例方法
Oct 29 Python
Python实现区域填充的示例代码
Feb 03 Python
python热力图实现的完整实例
Jun 25 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 计算两个时间戳相隔的时间的函数(小时)
2009/12/18 PHP
php使用date和strtotime函数输出指定日期的方法
2014/11/14 PHP
php中Socket创建与监听实现方法
2015/01/05 PHP
PHP制作万年历
2015/01/07 PHP
PHP+JS实现大规模数据提交的方法
2015/07/02 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
2017/09/04 PHP
PHP自定义函数实现数组比较功能示例
2017/10/19 PHP
在Laravel5中正确设置文件权限的方法
2019/05/22 PHP
jQuery的一些特性和用法整理小结
2010/01/13 Javascript
javascript 函数调用的对象和方法
2010/07/01 Javascript
jQuery aminate方法定位到页面具体位置
2013/12/26 Javascript
ext combobox动态加载数据库数据(附前后台)
2014/06/17 Javascript
jQuery实现切换字体大小的方法
2015/03/10 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
2015/04/03 Javascript
jQuery处理图片加载失败的常用方法
2015/06/08 Javascript
JavaScript的jQuery库插件的简要开发指南
2015/08/12 Javascript
JavaScript中的原型prototype完全解析
2016/05/10 Javascript
BootStrap智能表单实战系列(十一)级联下拉的支持
2016/06/13 Javascript
jQuery soColorPacker 网页拾色器
2016/06/22 Javascript
JS实现隐藏同级元素后只显示JS文件内容的方法
2016/09/04 Javascript
smartupload实现文件上传时获取表单数据(推荐)
2016/12/12 Javascript
JavaScript输出所选择起始与结束日期的方法
2017/07/12 Javascript
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
2018/01/09 Javascript
详解浏览器缓存和webpack缓存配置
2018/07/06 Javascript
详解基于vue-cli3.0如何构建功能完善的前端架子
2018/10/09 Javascript
详解在React-Native中持久化redux数据
2019/05/22 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
2019/11/01 Javascript
详解 Python 与文件对象共事的实例
2017/09/11 Python
用python实现对比两张图片的不同
2018/02/05 Python
python几种常用功能实现代码实例
2019/12/25 Python
日本化妆品植村秀俄罗斯官方网站:Shu Uemura俄罗斯
2020/02/01 全球购物
文艺晚会开场白
2015/05/29 职场文书
简短清晨问候语
2015/11/10 职场文书
小学新课改心得体会
2016/01/22 职场文书
导游词之天下银坑景区
2019/11/21 职场文书
Mysql文件存储图文详解
2021/06/01 MySQL