スポンサーサイト

    上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。

    ファイル拡張子別アイコン、ゲットだぜ!(ビシィッ!)

     久しぶりのPyQt・・・改めPySideネタです。
     最近時代の流れに則ってPySide使ってます。Maya2014のPySideはMenuのTrigered呼ばれると、Maya終了時にクラッシュするクールな仕様なのはなぜ?

     本日はファイルの拡張子・・・と言うかファイルに合わせてOSにセットされてるアイコンをゲットしちゃう方法です。
     では早速!





    ではコードを・・・ 今回は毎度おなじみQTreeViewにファイル一覧を表示させてみませう。
    # -*- coding:utf-8 -*-
    import sys
    import os
    from PySide import QtGui, QtCore
    
    class FileView(QtGui.QTreeView):
        '''第一引数に与えられたディレクトリの中のファイルを一覧するウィジェット'''
        def __init__(self, parentDir, parent=None):
            super(FileView, self).__init__(parent)
            # アイコンのサイズを24×24に設定する。
            self.setIconSize(QtCore.QSize(24, 24))
    
            # ファイルのアイコンを取得するためのクラスを定義。
            provider = QtGui.QFileIconProvider()
    
            # 内容を格納するためのItemModel。
            model = QtGui.QStandardItemModel(0, 1)
            model.setHeaderData(0, QtCore.Qt.Horizontal, parentDir)
    
            for filename in os.listdir(parentDir):
                filepath = os.path.join(parentDir, filename)
                # fileIconProviderのiconメソッドにファイルパスを渡すと、対応する
                # QIconオブジェクトが返ってくる。
                icon = provider.icon(filepath)
    
                item = QtGui.QStandardItem(filename)
                # StandardItemにアイコンをセット。
                item.setIcon(icon)
    
                model.setItem(model.rowCount(), 0, item)
    
            # ItemModelをビューにセットする。
            self.setModel(model)
    
    
    if __name__ == '__main__':
        app = QtGui.QApplication(sys.argv)
        # 今回のサンプルでは第一引数にファイル一覧を見たいディレクトリを指定して実行。
        win = FileView('C:\\Program Files\\Autodesk\\Maya2014\\bin')
        win.show()
    
        sys.exit(app.exec_())
    
    QFileIconProviderのインスタンスを作成し、そのオブジェクトのiconメソッドの引数にファイルのフルパスを渡せばファイルアイコンがセットされたQIconオブジェクトを返してくれます。
     あとは任意のオブジェクトにアイコンとしてセットして上げれば完了!
    QFileIconProviderSample001.png
     こんな感じでファイルに応じてファイルアイコンをつけてあげる事ができます。

     以前やった実行ファイル(.exe)からPyQtとPywinを使用してアイコンイメージを引っ張ると違ってQtだけで完了できる分余計な環境設定をしなくてよくていいですね!
     ただ、Windows標準のアイコンだとそんなに大きいアイコンではないみたいなのでその点だけは注意です。

    う~む、素晴らしぃっ!!
    スポンサーサイト

    コメントの投稿

    非公開コメント

    プロフィール

    Eske

    Author:Eske
    萌えイラストレーターを目指す3DCGイラストレーター。
    現在ポケモンカードゲーム、ガンダムトライエイジ、ガンダムコンクエスト、妖怪ウォッチとりつきカードゲームなどで3DCGを使用したイラストレーターとして参加中。

    主にここでは日々気づいたメモなんかを残してます。
    イラストのお仕事も受け付けております。ココのメールアドレスからご連絡できますので、お気軽にご相談下さい。

    最新記事
    最新コメント
    カテゴリ
    最新トラックバック
    月別アーカイブ
    検索フォーム
    リンク
    QRコード
    QR
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。