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爬虫之urllib2使用指南
Nov 05 Python
python字典操作实例详解
Nov 16 Python
python中的随机函数random的用法示例
Jan 27 Python
python 基本数据类型占用内存空间大小的实例
Jun 12 Python
Python中如何使用if语句处理列表实例代码
Feb 24 Python
python模拟键盘输入 切换键盘布局过程解析
Aug 15 Python
Pytorch 之修改Tensor部分值方式
Dec 27 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
Jan 08 Python
Python flask框架如何显示图像到web页面
Jun 03 Python
Python devel安装失败问题解决方案
Jun 09 Python
Python自动巡检H3C交换机实现过程解析
Aug 14 Python
Python OpenCV超详细讲解读取图像视频和网络摄像头
Apr 02 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和XSS跨站攻击的防范
2007/04/17 PHP
php 检查电子邮件函数(自写)
2014/01/16 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
2015/03/18 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
2016/02/26 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
2019/09/30 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
JavaScript实现x秒后自动跳转到一个页面
2013/01/03 Javascript
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
2013/06/17 Javascript
JS判断是否360安全浏览器极速内核的方法
2015/01/29 Javascript
javascript实现链接单选效果的方法
2015/05/13 Javascript
浅谈jquery中delegate()与live()
2015/06/22 Javascript
Bootstrap框架下下拉框select搜索功能
2020/03/26 Javascript
Bootstrap Table使用心得总结
2016/11/29 Javascript
JavaScript实现多栏目切换效果
2016/12/12 Javascript
基于JavaScript实现图片剪切效果
2017/03/07 Javascript
BootStrap模态框和select2合用时input无法获取焦点的解决方法
2017/09/01 Javascript
three.js利用卷积法如何实现物体描边效果
2019/11/27 Javascript
js常用方法、检查是否有特殊字符串、倒序截取字符串操作完整示例
2020/01/26 Javascript
在vue-cli3中使用axios获取本地json操作
2020/07/30 Javascript
[11:57]《一刀刀一天》第十七期:TI中国军团加油!
2014/05/26 DOTA
35个Python编程小技巧
2014/04/01 Python
python网络编程实例简析
2014/09/26 Python
cProfile Python性能分析工具使用详解
2019/07/22 Python
Python+Pyqt实现简单GUI电子时钟
2021/02/22 Python
利用rest framework搭建Django API过程解析
2019/08/31 Python
修改 CentOS 6.x 上默认Python的方法
2019/09/06 Python
python Dijkstra算法实现最短路径问题的方法
2019/09/19 Python
详解python内置常用高阶函数(列出了5个常用的)
2020/02/21 Python
python openCV自制绘画板
2020/10/27 Python
华为消费者德国官方网站:HUAWEI德国
2020/11/03 全球购物
成人继续教育实施方案
2014/03/01 职场文书
人力资源主管职责范本
2014/03/05 职场文书
质量月口号
2014/06/20 职场文书
通知怎么写?
2019/04/17 职场文书
HTML5+CSS+JavaScript实现捉虫小游戏设计和实现
2021/10/16 HTML / CSS
MySQL学习之基础命令实操总结
2022/03/19 MySQL