python3+PyQt5实现拖放功能

本文是对《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实现自定义流体混合窗口部件
  • python3+PyQt5使用数据库表视图
  • python3+PyQt5使用数据库窗口视图
  • python3+PyQt5实现文档打印功能
  • python3+PyQt5实现柱状图
  • python3+PyQt5实现自定义分数滑块部件
(0)

相关推荐

  • python3+PyQt5实现自定义分数滑块部件

    本文通过Python3+PyQt5实现自定义部件–分数滑块.它既能支持键盘也支持鼠标,使用物理(视口)坐标通过绘制方式显示. #!/usr/bin/env python3 import platform from PyQt5.QtCore import (QPointF, QRectF, QSize, Qt,pyqtSignal) from PyQt5.QtWidgets import (QApplication, QDialog,QSizePolicy, QGridLayout, QLCDNu

  • python3+PyQt5使用数据库窗口视图

    能够为数据库数据提供的最简单的用户界面之一就是窗体,窗体可以一次性呈现出来自同一记录的各个域.本文通过python3+pyqt5改写实现了python Qt gui 快速变成15章的例子. #!/usr/bin/env python3 import os import sys from PyQt5.QtCore import (QDate, QDateTime, QFile, QVariant, Qt) from PyQt5.QtWidgets import (QApplication, QDa

  • python3+PyQt5使用数据库表视图

    上文提到窗体可以一次性呈现出来自同一记录的各个域,但是对于用户希望能看到多条记录的表来说,就需要使用表格化的视图了.本文通过python3+pyqt5改写实现了python Qt gui 快速变成15章的例子,用户能够一次看到多条记录. #!/usr/bin/env python3 import os import sys from PyQt5.QtCore import (PYQT_VERSION_STR, QDate, QFile, QRegExp, QVariant, QModelInde

  • python3+PyQt5实现文档打印功能

    本文通过Python3+PyQt5实现<python Qt Gui 快速编程>这本书13章文档打印功能.本文共通过三种方式: 1.使用HTML和QTextDOcument打印文档 2.使用QTextCusor和QTextDocument打印文档 3.使用QPainter打印文档 使用Qpainter打印文档比QTextDocument需要更操心和复杂的计算,但是QPainter确实能够对输出赋予完全控制. #!/usr/bin/env python3 import math import sy

  • python3+PyQt5实现柱状图

    本文通过Python3+pyqt5实现了python Qt GUI 快速编程的16章的excise例子. #!/usr/bin/env python3 import random import sys from PyQt5.QtCore import (QAbstractListModel, QAbstractTableModel, QModelIndex, QSize, QTimer, QVariant, Qt,pyqtSignal) from PyQt5.QtWidgets import (

  • python3+PyQt5实现自定义流体混合窗口部件

    本文通过Python3+PyQt5实现自定义部件–流体混合窗口部件.通过逻辑(窗口)坐标绘制而成.调用setWindow,所有的绘制工作都会根据逻辑坐标系发生. #!/usr/bin/env python3 from PyQt5.QtCore import (QPointF, QSize, Qt,pyqtSignal) from PyQt5.QtWidgets import (QApplication, QFrame, QLabel, QSizePolicy, QSpinBox, QWidget

  • python3+PyQt5实现拖放功能

    本文是对<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, QHBo

  • PyQt5实现拖放功能

    在这节教程中,我们将探讨PyQt5中的拖放操作. 在计算机图形用户界面(GUI)中,拖放是在某个虚拟对象上点击并拖动到另一个位置或虚拟对象上的操作.它通常用于调用多个动作,或为两个抽象对象创建某些联系. 拖放是图形用户界面的一部分.拖放可以使用户直观地完成某些复杂的操作. 通常我们可以对两种事物进行拖放操作:数据或某些图形对象.如果我们将某个应用中的图片拖放到另一个应用,我们拖放的是二进制数据.如果将Firefox的某个标签页拖放到其他地方,我们拖放的是一个图形组件. 简单的拖放 在第一个示例中

  • python3+PyQt5重新实现自定义数据拖放处理

    本文分成两部分,第一部分通过python3+PyQt5实现自定义数据的拖放操作.第二部分则对第一部分的程序进行修改,增加拖放操作时,菜单提示是否移动或拷贝,还有可以通过ctrl键盘来设置移动过程中拷贝源而非会将源删除. 自定义数据MIME数据类型QMimeData,MIME是一种用于处理具有多个组成部分的自定义数据的标准化格式.MIME数据由一个数据类型和一个子类型构成–例如,text/plain,text/html,image/png,要处理自定义MIME数据,就必须要选用一种自定义数据类型和

  • python3+PyQt5实现自定义窗口部件Counters

    本文通过Python3+PyQt5实现自定义部件–Counters自定 窗口部件.这个窗口是3*3的网格.本文有两个例子如下: /home/yrd/eric_workspace/chap11/counters.py. /home/yrd/eric_workspace/chap11/counters_dnd.py 第二个例子在第一个例子的基础上实现能通过鼠标拖拽球到不同的网格中. /home/yrd/eric_workspace/chap11/counters.py #!/usr/bin/env

  • python3+PyQt5+Qt Designer实现扩展对话框

    本文是对<Python Qt GUI快速编程>的第9章的扩展对话框例子Find and replace用Python3+PyQt5+Qt Designer进行改写. 第一部分无借用Qt Designer,完全用代码实现. 第二部分则借用Qt Designer,快速实现. 第一部分: import sys from PyQt5.QtCore import Qt,pyqtSignal from PyQt5.QtWidgets import (QApplication, QCheckBox, QDi

随机推荐