我正在寻找有关将一些新的Windows 7任务栏功能集成到我的PyQt应用程序中的信息。
具体而言,如果已经存在使用新进度指示器(see here)和快速链接的可能性(www.petri.co.il/wp-content/uploads/new_win7_taskbar_features_8.gif)。
如果有人可以提供一些链接或只是“尚未实施”,我将非常感激。
非常感谢。
答案 0 :(得分:23)
正如Quark所说,功能不在Qt 4.5中,但你可以直接从Qt调用windows API。虽然它有点工作。
新的任务栏API通过COM公开,因此您无法使用ctypes.windll。您需要创建一个.tlb文件来访问这些函数。从this forum post或从Windows SDK获取ITaskbarList的接口定义。将其保存到一个名为eg的文件中TaskbarLib.idl。
创建.tlb文件。您可能需要Windows SDK,或者从其他地方获取IDL编译器。
midl TaskbarLib.idl /tlb TaskbarLib.tlb
加载.tlb(你需要Win32 Extensions for Python,http://python.net/crew/skippy/win32/Downloads.html):
import comtypes.client as cc
cc.GetModule("TaskbarLib.tlb")
创建TaskbarList对象。设置进度条的功能位于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)
这是一个complete example script。 资料来源: 1 2
答案 1 :(得分:5)
有一个Qt插件可以实现所有Windows 7任务栏扩展。它被称为Q7Goodies。它带有PyQt绑定,因此这可能是利用PyQt中Windows 7功能的最简单方法。
答案 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支持,但这并不意味着它没有你想要的东西,因为,至少如果我理解正确,它可能会折叠那个现有小部件的功能。