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字典序问题实例
Sep 26 Python
利用Anaconda简单安装scrapy框架的方法
Jun 13 Python
Flask框架使用DBUtils模块连接数据库操作示例
Jul 20 Python
pycharm 取消默认的右击运行unittest的方法
Nov 29 Python
浅谈Pycharm调用同级目录下的py脚本bug
Dec 03 Python
使用Django2快速开发Web项目的详细步骤
Jan 06 Python
Python3按一定数据位数格式处理bin文件的方法
Jan 24 Python
django框架自定义模板标签(template tag)操作示例
Jun 24 Python
Django models文件模型变更错误解决
May 11 Python
Python生成pdf目录书签的实例方法
Oct 29 Python
Django怎么在admin后台注册数据库表
Nov 14 Python
Python还能这么玩之用Python修改了班花的开机密码
Jun 04 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的日期处理函数及uchome的function_coomon中日期处理函数的研究
2011/01/12 PHP
PHP与MongoDB简介|安全|M+PHP应用实例详解
2013/06/17 PHP
ThinkPHP添加更新标签的方法
2014/12/05 PHP
php使用sql server验证连接数据库的方法
2014/12/25 PHP
Yii框架视图、视图布局、视图数据块操作示例
2019/10/14 PHP
jquery一般方法介绍 入门参考
2011/06/21 Javascript
JavaScript 一道字符串分解的题目
2011/08/03 Javascript
document.write()及其输出内容的样式、位置控制
2013/08/12 Javascript
js中浮点型运算BUG的解决方法说明
2014/01/06 Javascript
document.execCommand()的用法小结
2014/01/08 Javascript
js点击文本框弹出可选择的checkbox复选框
2016/02/03 Javascript
使用js获取地址栏参数的方法推荐(超级简单)
2016/06/14 Javascript
js判断checkbox是否选中个数的方法(超简单)
2016/08/19 Javascript
jQuery与JS加载事件用法分析
2016/09/04 Javascript
Vue中 v-if/v-show/插值表达式导致闪现的原因及解决办法
2018/10/12 Javascript
基于VUE的v-charts的曲线显示功能
2019/10/01 Javascript
Python md5与sha1加密算法用法分析
2017/07/14 Python
Python+request+unittest实现接口测试框架集成实例
2018/03/16 Python
使用matplotlib画散点图的方法
2018/05/25 Python
详解python 注释、变量、类型
2018/08/10 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
pymysql 开启调试模式的实现
2019/09/24 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
关于Java finally的面试题
2016/04/27 面试题
毕业生的自我评价范文
2013/12/31 职场文书
船舶专业个人求职信范文
2014/01/02 职场文书
怎样写演讲稿
2014/01/04 职场文书
大学生新学期计划书
2014/04/28 职场文书
学生会竞选演讲稿纪检部
2014/08/25 职场文书
ktv服务员岗位职责
2015/02/09 职场文书
就业导师推荐信范文
2015/03/27 职场文书
2015年学生管理工作总结
2015/05/26 职场文书
医学会议开幕词
2016/03/03 职场文书
nginx 多个location转发任意请求或访问静态资源文件的实现
2021/03/31 Servers
Python合并pdf文件的工具
2021/07/01 Python
Python tensorflow卷积神经Inception V3网络结构
2022/05/06 Python