在PyQt中使用Windows 7任务栏功能
我想了解如何把一些新的Windows 7任务栏功能整合到我的PyQt应用程序里。
具体来说,我想知道是否已经可以使用新的进度指示器(点击这里查看)和快速链接(www.petri.co.il/wp-content/uploads/new_win7_taskbar_features_8.gif)。
如果有人能提供一些链接,或者只是告诉我“还没有实现”,我会非常感激。
非常感谢!
3 个回答
5
有一个Qt的附加工具,可以实现所有Windows 7任务栏的扩展功能。这个工具叫做 Q7Goodies。它还提供了PyQt的绑定,所以这可能是使用PyQt来利用Windows 7功能的最简单方法。
23
正如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文件(你需要Win32扩展库来支持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)
这里有一个完整的示例脚本。