2009-11-15 71 views
12

我正在尋找關於將一些新的Windows 7任務欄功能集成到我的PyQt應用程序中的信息。在PyQt中使用Windows 7任務欄功能

具體如果已經存在使用新進度指示器(see here)和快速鏈接(www.petri.co.il/wp-content/uploads/new_win7_taskbar_features_8.gif)的可能性。

如果任何人可以提供幾個鏈接或只是一個「尚未實現」,我會非常感激。

非常感謝。

回答

23

正如夸克所言,功能並不在Qt 4.5中,但您可以直接從Qt調用Windows API。雖然它有一點點工作。

  1. 新的任務欄API通過COM公開,因此您不能使用ctypes.windll。您需要創建一個.tlb文件才能訪問這些功能。從this forum post或從Windows SDK獲取ITaskbarList的接口定義。將其保存到一個名爲例如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。在Qt 4.6正式發佈之前,PyQt將不會包裝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功能的最簡單方法。

相關問題