(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も対応できるようになります。