質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

解決済

pyqt5でドラッグ&ドロップで画像を取得、表示したい

uc200
uc200

総合スコア32

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1回答

0評価

0クリップ

5551閲覧

投稿2017/12/05 01:47

###前提・実現したいこと
python3.5を使っています。pyqt5を用いてウィンドウに画像をドラッグ&ドロップした時にその画像が表示されるようにしたいです。

###発生している問題・エラーメッセージ

jpg画像をドラッグしてもドロップ可能の表示が出ません。当然ドロップしても何も起こりません。

###該当のソースコード

ウィンドウの左上の、縦、横100ピクセルの領域に画像をドラッグ&ドロップすると、ウィンドウの座標(150,150)の位置からその画像が表示されるコードのつもりで書きました。

python3

import sys from PyQt5.QtWidgets import (QPushButton, QWidget, QLineEdit, QApplication) from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * class Button(QPushButton): def __init__(self, title, parent): super().__init__(title, parent) self.setAcceptDrops(True) def dragEnterEvent(self, e): if e.mimeData().hasFormat('image/*'): e.accept() else: e.ignore() def dropEvent(self, e): self.label.setPixmap(QPixmap(event.mimeData().imageData())) class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): button = Button("",self) button.resize(100,100) button.setIcon(QIcon("gazo1.jpg")) button.setIconSize(QSize(100,100)) button.move(0, 0) self.label = QLabel(self) self.label.setPixmap(QPixmap('gazo2.jpg')) self.label.move(150,150) self.setWindowTitle('Simple drag & drop') self.setGeometry(300, 300, 300, 300) if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() ex.show() app.exec_()

###試したこと
ドラッグ&ドロップを用いたコードの例として、次のコードを参考にしました。

import sys from PyQt5.QtWidgets import (QPushButton, QWidget, QLineEdit, QApplication) class Button(QPushButton): def __init__(self, title, parent): super().__init__(title, parent) self.setAcceptDrops(True) def dragEnterEvent(self, e): if e.mimeData().hasFormat('text/plain'): e.accept() else: e.ignore() def dropEvent(self, e): self.setText(e.mimeData().text()) class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): edit = QLineEdit('', self) edit.setDragEnabled(True) edit.move(30, 65) button = Button("Button", self) button.move(190, 65) self.setWindowTitle('Simple drag & drop') self.setGeometry(300, 300, 300, 150) if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() ex.show() app.exec_()

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。