>  기사  >  백엔드 개발  >  python3+PyQt5는 드래그 앤 드롭 기능을 구현합니다.

python3+PyQt5는 드래그 앤 드롭 기능을 구현합니다.

不言
不言원래의
2018-04-24 11:46:453328검색

이 글은 주로 python3+PyQt5의 드래그 앤 드롭 기능을 모든 사람에게 자세히 소개합니다. 관심 있는 친구들이 참고할 수 있습니다.

이 글은 "Python Qt GUI Rapid 프로그래밍"의 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에서 hist 구현 gram

python3+PyQt5는 문서를 실현합니다. 인쇄 기능

위 내용은 python3+PyQt5는 드래그 앤 드롭 기능을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.