bravo's blog

多分ググっても出てこないようなプログラミング記事を目指します!

(OSX) PyQtでDockアイコンへのドロップを実装する その1

Dockアイコンへのドラッグアンドドロップについて

利点としては「PyQtドラッグアンドドロップを実装する」で書きましたが、 2番目の「アプリケーションの起動手続きとして使える」ことにほぼ特化していると言えます。

  • ファイルやURLといった情報を直感的かつキーボードを使わないで入力できる
  • アプリケーションの起動手続きとして使える
  • ソフトによって使われ方はさまざま

PyQtでDockへのドラッグアンドドロップをするには

  • QApplicationを継承したクラスを実装するだけ

サンプル (DropToMe.py)

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class DropLabel(QLabel):
    def __init__(self, parent=None):
        super(DropLabel, self).__init__(parent)
        self.resize(720, 240)
        self.setFont(QFont('Arial', 24))
        self.setText('Drop to Dock icon')
        self.setAlignment(Qt.AlignCenter)

class DropApp(QApplication):
    fileOpen = pyqtSignal(str)
    def event(self, event):
        if event.type() == QEvent.FileOpen:
            self.fileOpen.emit(event.url().toString())
        return super(QApplication, self).event(event)

def main():
    app = DropApp(sys.argv)
    label = DropLabel()
    app.fileOpen.connect(label.setText)
    label.show()
    label.raise_()
    app.exec_()

if __name__ == '__main__':
    main()

このサンプルではQLabelで作られたウインドウを表示しています。 ドロップされた時の内容はこのQLabelの中に表示します。

実行してみましょう


(OSX) PyQtでDockアイコンへのドロップを実装する その1

あと一歩

最初に記述した、アプリケーションの起動手続きとして使えるという状態にするには、 もうひと手間かける必要があります。リンクのURLも対応できるようになります。

PR