在PyQt中使用Windows 7任务栏功能

Wro*_*ngs 12 python taskbar pyqt pyqt4 windows-7

我正在寻找有关将一些新的Windows 7任务栏功能集成到我的PyQt应用程序中的信息.

具体来说,如果已经存在使用新进度指示器(参见此处)和快速链接(www.petri.co.il/wp-content/uploads/new_win7_taskbar_features_8.gif)的可能性.

如果有人可以提供一些链接或只是"尚未实现",我将非常感激.

非常感谢.

jdm*_*jdm 23

正如夸克所说,功能不在Qt 4.5中,但你可以直接从Qt调用windows API.虽然它有点工作.

  1. 新的任务栏API通过COM公开,因此您无法使用ctypes.windll.您需要创建一个.tlb文件来访问这些函数.从此论坛帖子或从Windows SDK 获取ITaskbarList的接口定义.将其保存到名为TaskbarLib.idl的文件中.

  2. 创建.tlb文件.您可能需要Windows SDK,或从其他地方获取IDL编译器.

    midl TaskbarLib.idl /tlb TaskbarLib.tlb
    
    Run Code Online (Sandbox Code Playgroud)
  3. 加载.tlb(你需要Win32 Extensions for Python,http://python.net/crew/skippy/win32/Downloads.html):

    import comtypes.client as cc
    cc.GetModule("TaskbarLib.tlb")
    
    Run Code Online (Sandbox Code Playgroud)
  4. 创建TaskbarList对象.设置进度条的功能在ITaskbarList3界面中:

    import comtypes.gen.TaskbarLib as tbl
    taskbar = cc.CreateObject(
        "{56FDF344-FD6D-11d0-958A-006097C9A090}",
        interface=tbl.ITaskbarList3)
    
    Run Code Online (Sandbox Code Playgroud)
  5. 现在您可以调用API函数:

    taskbar.HrInit()
    taskbar.SetProgressValue(self.winId(),40,100)
    
    Run Code Online (Sandbox Code Playgroud)

这是一个完整的示例脚本.资料来源: 1 2


小智 5

有一个Qt附加组件实现了所有Windows 7任务栏扩展.它被称为Q7Goodies.它带有PyQt绑定,因此这可能是利用PyQt中Windows 7功能的最简单方法.