前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PyQT 拖放事件(一)

PyQT 拖放事件(一)

作者头像
用户6021899
发布2019-08-14 16:16:03
1.8K0
发布2019-08-14 16:16:03
举报

许多PyQt窗口部件都支持拖放操作,如QColumnView,QHeaderView, QListView, QTableView 和 QTreeView,我们要做的只是打开支持模式使其工作即可。

.setDragEnabled(True) #设置为可拖动

.setAcceptDrops(True) #设置为可放下,只有“放下”是从QWidget继承而来

这种方式的拖放行为是复制,而不是移动。

如下的程序有两个列表控件(QListView),左边的列表控件使用默认模式,右边的列表控件使用图标模式。项目(QListWidgetItem)可以在它们之间拖放复制。

代码如下:

代码语言:javascript
复制
import sys
from PyQt5.QtWidgets import QWidget, QApplication, QListWidget, QHBoxLayout,\
     QListWidgetItem
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import Qt, QSize

class Widget(QWidget):
    def __init__(self, parent = None):
        super().__init__(parent)
        self.setWindowTitle("拖放事件示例")
        listWidget = QListWidget()
        listWidget.setAcceptDrops(True)  #设置为可放下
        listWidget.setDragEnabled(True)  #设置为可拖动
        iconList = ["英短", "布偶", "折耳", "波斯", "缅因", "森林"]
        for i in iconList:
            listWidget.addItem(QListWidgetItem(QIcon(i + ".jpg"), i))

        iconListWidget = QListWidget()
        iconListWidget.setViewMode(QListWidget.IconMode)  #设置为图标模式
        iconListWidget.setIconSize(QSize(100, 100)) #可设置图标大小
        iconListWidget.setAcceptDrops(True)  #设置为可放下
        iconListWidget.setDragEnabled(True)  #设置为可拖动
        layout = QHBoxLayout()
        layout.addWidget(listWidget)
        layout.addWidget(iconListWidget)
        self.setLayout(layout)
  
if __name__ == '__main__':
    app = QApplication(sys.argv)
    mw = Widget()
    mw.show()
    sys.exit(app.exec_())

这样的内置拖放功能非常方便,通常也足够实用。不过,如果需要使其能够处理自定义数据,或者,就必须重新实现一些事件处理程序。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python可视化编程机器学习OpenCV 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档