12

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

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

如果有人可以提供一些链接或只是“尚未实施”,我将不胜感激。

非常感谢。

4

3 回答 3

23

正如quark 所说,该功能不在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
    
  3. 加载 .tlb(您需要 Python 的 Win32 扩展,http://python.net/crew/skippy/win32/Downloads.html):

    import comtypes.client as cc
    cc.GetModule("TaskbarLib.tlb")
    
  4. 创建任务栏列表对象。设置进度条的功能在界面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)
    

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

于 2009-11-16T20:00:05.790 回答
5

There is a Qt add-on that implements all the Windows 7 taskbar extensions. It is called Q7Goodies. It comes with a PyQt bindings, so this is probably the easiest way to take advantage of Windows 7 features in PyQt.

于 2010-09-08T17:55:47.920 回答
3

未在 Qt 4.5 中实现,但在 Qt 4.6 的作品中出现。在 Qt 4.6 正式发布之前,PyQt 不会包装 4.6,但是您可以玩4.6 快照或检查Qt 存储库,看看 C++ 版本是否支持您想要的功能。如果支持,那么 PyQt 4.6 也将支持它。

补充:4.6 功能列表没有显示明确的 Windows 7 支持,但这并不意味着它没有你想要的,因为至少如果我理解正确的话,他们很可能会将该功能折叠到现有的小部件。

于 2009-11-15T03:04:59.347 回答