【问题标题】:Using Windows 7 taskbar features in PyQt在 PyQt 中使用 Windows 7 任务栏功能
【发布时间】:2010-12-16 17:20:17
【问题描述】:

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

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

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

非常感谢。

【问题讨论】:

    标签: python windows-7 pyqt pyqt4 taskbar


    【解决方案1】:

    正如quark 所说,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 的 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)
      

    这是complete example script。 资料来源: 1 2

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        未在 Qt 4.5 中实现,但出现了 in the works for Qt 4.6。 PyQt 在 Qt 4.6 正式发布之前不会包装 4.6,但您可以使用 4.6 snapshots 或查看 Qt repository 并查看 C++ 版本是否支持您想要的功能。如果支持,那么 PyQt 4.6 也将支持它。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-01-06
          • 2011-03-24
          • 2012-09-08
          • 2010-12-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多