ホームページ  >  記事  >  バックエンド開発  >  python3+PyQt5はドラッグアンドドロップ機能を実装します

python3+PyQt5はドラッグアンドドロップ機能を実装します

不言
不言オリジナル
2018-04-24 11:46:453328ブラウズ

この記事は主に 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はドラッグアンドドロップ機能を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。