読者です 読者をやめる 読者になる 読者になる

bravo's blog

マルチプラットフォームGUIツールキット+軽量言語であるPyQtのプログラミングとか

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

広告