2009-11-15 32 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功能的最简单方法。

相关问题