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中List.count()方法的使用教程
May 20 Python
在Python中使用next()方法操作文件的教程
May 24 Python
Python聚类算法之基本K均值实例详解
Nov 20 Python
Windows上配置Emacs来开发Python及用Python扩展Emacs
Nov 20 Python
python生成tensorflow输入输出的图像格式的方法
Feb 12 Python
Python产生Gnuplot绘图数据的方法
Nov 09 Python
详解pyenv下使用python matplotlib模块的问题解决
Nov 29 Python
Python发送邮件测试报告操作实例详解
Dec 08 Python
导入tensorflow时报错:cannot import name 'abs'的解决
Oct 10 Python
python如何提取英语pdf内容并翻译
Mar 03 Python
python实现自动打卡的示例代码
Oct 10 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
Jan 15 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来写记数器(详细介绍)
2006/10/09 PHP
php curl模拟post请求小实例
2013/11/13 PHP
php强制运行广告的方法
2014/12/01 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
2016/11/14 PHP
JavaScript 异步调用框架 (Part 1 - 问题 & 场景)
2009/08/03 Javascript
JS Replace()的高级使用方法介绍
2013/06/29 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
2015/11/26 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
js实现带农历和八字等信息的日历特效
2016/05/16 Javascript
Bootstrap缩略图与警告框学习使用
2017/02/08 Javascript
angular动态表单制作
2018/02/23 Javascript
D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本)
2019/05/09 Javascript
了解重排与重绘
2019/05/29 Javascript
Vue配置marked链接添加target="_blank"的方法
2019/07/19 Javascript
layui--js控制switch的切换方法
2019/09/03 Javascript
小程序如何支持使用 async/await详解
2019/09/12 Javascript
Element实现表格嵌套、多个表格共用一个表头的方法
2020/05/09 Javascript
Vue实现图书管理案例
2021/01/20 Vue.js
[04:53]DOTA2英雄基础教程 祈求者
2014/01/03 DOTA
Python实现的多线程端口扫描工具分享
2015/01/21 Python
Python数据分析之真实IP请求Pandas详解
2016/11/18 Python
使用Turtle画正螺旋线的方法
2017/09/22 Python
python利用smtplib实现QQ邮箱发送邮件
2020/05/20 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
TripAdvisor瑞典:全球领先的旅游网站
2017/12/11 全球购物
如何打开WebSphere远程debug
2014/10/10 面试题
银行见习期自我鉴定
2014/01/29 职场文书
教师师德演讲稿
2014/05/06 职场文书
优秀实习生主要事迹
2014/05/29 职场文书
试用期员工工作自我评价
2014/09/10 职场文书
委托书范本
2014/09/13 职场文书
2014年自愿离婚协议书
2014/10/10 职场文书
应聘教师自荐信
2015/03/26 职场文书
Angular性能优化之第三方组件和懒加载技术
2021/05/10 Javascript
iSCSI服务器CHAP双向认证配置
2022/04/01 Servers
TV动画《政宗君的复仇》第二季制作决定PV公布
2022/04/02 日漫