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 IDLE入门简介
Dec 08 Python
使用pip发布Python程序的方法步骤
Oct 11 Python
对Python中内置异常层次结构详解
Oct 18 Python
django使用haystack调用Elasticsearch实现索引搜索
Jul 24 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
Jul 28 Python
python tkinter实现屏保程序
Jul 30 Python
解决python3插入mysql时内容带有引号的问题
Mar 02 Python
Tensorflow中的降维函数tf.reduce_*使用总结
Apr 20 Python
Python如何在windows环境安装pip及rarfile
Jun 15 Python
Python第三方包PrettyTable安装及用法解析
Jul 08 Python
python 浮点数四舍五入需要注意的地方
Aug 18 Python
教你漂亮打印Pandas DataFrames和Series
May 29 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/03 新手入门
用文本文件实现的动态实时发布新闻的程序
2006/10/09 PHP
PHP开发需要注意的安全问题
2010/09/01 PHP
php实现天干地支计算器示例
2014/03/14 PHP
PHP获取QQ达人QQ信息的方法
2015/03/05 PHP
Javascript入门学习资料收集整理篇
2008/07/06 Javascript
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
jQuery 选择表格(table)里的行和列及改变简单样式
2012/12/15 Javascript
浅析js中2个等号与3个等号的区别
2013/08/06 Javascript
JS获取月份最后天数、最大天数与某日周数的方法
2015/12/08 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
全面解析bootstrap格子布局
2016/05/22 Javascript
Bootstrap表格制作代码
2017/03/17 Javascript
webpack多页面开发实践
2017/12/18 Javascript
基于vue-ssr服务端渲染入门详解
2018/01/08 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
2018/02/10 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
2018/02/27 Javascript
cnpm加速Angular项目创建的方法
2018/09/07 Javascript
Vue.js上传图片到阿里云OSS存储的方法示例
2018/12/13 Javascript
node删除、复制文件或文件夹示例代码
2019/08/13 Javascript
微信小程序HTTP接口请求封装代码实例
2019/09/05 Javascript
解决vue-cli项目开发运行时内存暴涨卡死电脑问题
2019/10/29 Javascript
[01:59][TI9趣味视频] 全明星赛奖励
2019/08/23 DOTA
python定时采集摄像头图像上传ftp服务器功能实现
2013/12/23 Python
Python使用htpasswd实现基本认证授权的例子
2014/06/10 Python
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
简单谈谈python中的多进程
2016/11/06 Python
Python中作用域的深入讲解
2018/12/10 Python
使用python socket分发大文件的实现方法
2019/07/08 Python
解决pycharm下pyuic工具使用的问题
2020/04/08 Python
详解Anaconda 的安装教程
2020/09/23 Python
python实现跨年表白神器--你值得拥有
2021/01/04 Python
西班牙第一的网上药房:PromoFarma.com
2017/04/17 全球购物
新西兰最大的天然保健及护肤品网站:HealthPost(直邮中国)
2021/02/13 全球购物
做一个有道德的人演讲稿
2014/05/14 职场文书
普通党员四风问题对照检查材料
2014/09/27 职场文书