我正在尋找關於將一些新的Windows 7任務欄功能集成到我的PyQt應用程序中的信息。在PyQt中使用Windows 7任務欄功能
具體如果已經存在使用新進度指示器(see here)和快速鏈接(www.petri.co.il/wp-content/uploads/new_win7_taskbar_features_8.gif)的可能性。
如果任何人可以提供幾個鏈接或只是一個「尚未實現」,我會非常感激。
非常感謝。
我正在尋找關於將一些新的Windows 7任務欄功能集成到我的PyQt應用程序中的信息。在PyQt中使用Windows 7任務欄功能
具體如果已經存在使用新進度指示器(see here)和快速鏈接(www.petri.co.il/wp-content/uploads/new_win7_taskbar_features_8.gif)的可能性。
如果任何人可以提供幾個鏈接或只是一個「尚未實現」,我會非常感激。
非常感謝。
正如夸克所言,功能並不在Qt 4.5中,但您可以直接從Qt調用Windows API。雖然它有一點點工作。
新的任務欄API通過COM公開,因此您不能使用ctypes.windll。您需要創建一個.tlb文件才能訪問這些功能。從this forum post或從Windows SDK獲取ITaskbarList的接口定義。將其保存到一個名爲例如TaskbarLib.idl。
創建.tlb文件。您可能需要Windows SDK,或從其他地方獲取IDL編譯器。
midl TaskbarLib.idl /tlb TaskbarLib.tlb
裝入.TLB(你需要的Python,http://python.net/crew/skippy/win32/Downloads.html Win32的擴展):
import comtypes.client as cc
cc.GetModule("TaskbarLib.tlb")
創建TaskbarList對象。設置進度條的功能是在接口ITaskbarList3:
import comtypes.gen.TaskbarLib as tbl
taskbar = cc.CreateObject(
"{56FDF344-FD6D-11d0-958A-006097C9A090}",
interface=tbl.ITaskbarList3)
現在你可以調用API函數:
taskbar.HrInit()
taskbar.SetProgressValue(self.winId(),40,100)
這裏有一個complete example script。 來源: 1 2
在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支持,但這並不意味着它不會有你想要的,因爲至少如果我理解正確,它可能會將該功能摺疊到現有的部件。
有一個Qt插件,實現了所有Windows 7任務欄擴展。它被稱爲Q7Goodies。它帶有一個PyQt綁定,所以這可能是在PyQt中利用Windows 7功能的最簡單方法。