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的setuptools框架下生成egg的教程
Apr 13 Python
Python与Redis的连接教程
Apr 22 Python
Python Sqlite3以字典形式返回查询结果的实现方法
Oct 03 Python
一个Python最简单的接口自动化框架
Jan 02 Python
python实现可视化动态CPU性能监控
Jun 21 Python
Python Web框架之Django框架Model基础详解
Aug 16 Python
python实现对变位词的判断方法
Apr 05 Python
不到20行实现Python代码即可制作精美证件照
Apr 24 Python
Keras中的多分类损失函数用法categorical_crossentropy
Jun 11 Python
详解用Python调用百度地图正/逆地理编码API
Jul 02 Python
浅析Python迭代器的高级用法
Jul 16 Python
Scrapy 配置动态代理IP的实现
Sep 28 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
Protoss热键控制
2020/03/14 星际争霸
PHP系统流量分析的程序
2006/10/09 PHP
php使用百度天气接口示例
2014/04/22 PHP
laravel5.1框架基础之Blade模板继承简单使用方法分析
2019/09/05 PHP
用js+xml自动生成表格的东西
2006/12/21 Javascript
利用jQuery操作对象数组的实现代码
2011/04/27 Javascript
使用javascript实现雪花飘落的效果
2015/01/13 Javascript
javascript中的正则表达式使用详解
2015/08/30 Javascript
JavaScript拖拽、碰撞、重力及弹性运动实例分析
2016/01/08 Javascript
Node.js开发第三方微信公众平台
2017/06/05 Javascript
使用JS中的Replace()方法遇到的问题小结
2017/10/20 Javascript
JavaScript中AOP的实现与应用
2019/05/06 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
微信小程序的授权实现过程解析
2019/08/02 Javascript
vue实现多个echarts根据屏幕大小变化而变化实例
2020/07/19 Javascript
原生js生成图片验证码
2020/10/11 Javascript
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
Python获取网页上图片下载地址的方法
2015/03/11 Python
python制作最美应用的爬虫
2015/10/28 Python
python控制台中实现进度条功能
2015/11/10 Python
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
2016/07/02 Python
Python利用ElementTree模块处理XML的方法详解
2017/08/31 Python
python如何统计序列中元素
2020/07/31 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
用pandas中的DataFrame时选取行或列的方法
2018/07/11 Python
对Python中内置异常层次结构详解
2018/10/18 Python
python实现推箱子游戏
2020/03/25 Python
python使用requests库爬取拉勾网招聘信息的实现
2020/11/20 Python
HTML5新控件之日期和时间选择输入的实现代码
2018/09/13 HTML / CSS
乡镇党委书记第三阶段个人整改措施
2014/09/16 职场文书
员工辞职信范文
2015/03/02 职场文书
2015年度个人业务工作总结
2015/04/27 职场文书
2016党性教育学习心得体会
2016/01/21 职场文书
低端且暴利的线上线下创业项目分享
2019/09/03 职场文书
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
2021/04/24 Python
Vue详细的入门笔记
2021/05/10 Vue.js