2009-11-15 11 views
12

新しいWindows 7タスクバー機能のいくつかをPyQtアプリケーションに統合する方法についての情報を探しています。すでに新しい進行状況インジケータ(see here)とクイックリンク(www.petri.co.il/wp-content/uploads/new_win7_taskbar_features_8.gif)を使用する可能性がある。具体的場合PyQtのWindows 7タスクバー機能を使用する

誰かがリンクをいくつか用意していても、「まだ実装されていない」場合は、とても感謝しています。

ありがとうございます。

答えて

23

quarkによると、この機能はQt 4.5にはありませんが、Windows APIをQtから直接呼び出すことができます。しかし、それはちょっとした仕事です。

  1. 新しいタスクバーAPIはCOMを通じて公開されているため、ctypes.windllは使用できません。関数にアクセスするには.tlbファイルを作成する必要があります。 ITaskbarListのインターフェイス定義をthis forum postから取得するか、Windows SDKから取得します。例えば、と呼ばれるファイルに保存します。 TaskbarLib.idl。

  2. .tlbファイルを作成します。あなたはおそらくWindows SDKを必要とするか、他の場所からIDLコンパイラを入手します。

    midl TaskbarLib.idl /tlb TaskbarLib.tlb 
    
  3. ロード.TLB(あなたは、Python、http://python.net/crew/skippy/win32/Downloads.htmlのためのWin32の拡張機能を必要とする):

    import comtypes.client as cc 
    cc.GetModule("TaskbarLib.tlb") 
    
  4. はTaskbarListオブジェクトを作成します。プログレスバーを設定するための機能がインタフェースITaskbarList3である:

    import comtypes.gen.TaskbarLib as tbl 
    taskbar = cc.CreateObject(
        "{56FDF344-FD6D-11d0-958A-006097C9A090}", 
        interface=tbl.ITaskbarList3) 
    
  5. 今、あなたはAPI関数を呼び出すことができます。

    taskbar.HrInit() 
    taskbar.SetProgressValue(self.winId(),40,100) 
    

ここcomplete example scriptです。 出典: 1 2

3

Qt 4.5では実装されていませんが、in the works for Qt 4.6と表示されます。 PyQtはQt 4.6が公式にリリースされるまで4.6をラップしませんが、4.6 snapshotで遊んだり、Qt repositoryをチェックアウトして、C++バージョンがあなたが望む機能をサポートしているかどうか確認してください。もしそうなら、PyQt 4.6もそれをサポートします。

追加:list of 4.6 featuresに明示的なWindows 7のサポートは表示されませんが、それはあなたが望むものがないということを意味しません。少なくとも、私が正しく理解すれば、その機能を既存のウィジェット。

5

QtはアドオンそれはすべてのWindows 7のタスクバーの拡張機能を実装してあります。それはQ7Goodiesと呼ばれます。 PyQtバインディングが付属しているので、PyQtのWindows 7機能を利用する最も簡単な方法です。

関連する問題