我正在寻找有关将一些新的 Windows 7 任务栏功能集成到我的 PyQt 应用程序中的信息。
特别是如果已经存在使用新进度指示器(参见此处)和快速链接(www.petri.co.il/wp-content/uploads/new_win7_taskbar_features_8.gif)的可能性。
如果有人可以提供一些链接或只是“尚未实施”,我将不胜感激。
非常感谢。
正如quark 所说,该功能不在Qt 4.5 中,但您可以直接从Qt 调用windows API。它虽然有点工作。
新的任务栏 API 通过 COM 公开,因此您不能使用 ctypes.windll 。您需要创建一个 .tlb 文件才能访问这些功能。从此论坛帖子或 windows SDK获取 ITaskbarList 的接口定义。将其保存到名为例如 TaskbarLib.idl 的文件中。
创建 .tlb 文件。您可能需要 Windows SDK,或者从其他地方获取 IDL 编译器。
midl TaskbarLib.idl /tlb TaskbarLib.tlb
加载 .tlb(您需要 Python 的 Win32 扩展,http://python.net/crew/skippy/win32/Downloads.html):
import comtypes.client as cc
cc.GetModule("TaskbarLib.tlb")
创建任务栏列表对象。设置进度条的功能在界面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)
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.
未在 Qt 4.5 中实现,但在 Qt 4.6 的作品中出现。在 Qt 4.6 正式发布之前,PyQt 不会包装 4.6,但是您可以玩4.6 快照或检查Qt 存储库,看看 C++ 版本是否支持您想要的功能。如果支持,那么 PyQt 4.6 也将支持它。
补充:4.6 功能列表没有显示明确的 Windows 7 支持,但这并不意味着它没有你想要的,因为至少如果我理解正确的话,他们很可能会将该功能折叠到现有的小部件。