2009-11-15 5 views
12

Я ищу информацию об интеграции некоторых новых функций панели задач Windows 7 в свои приложения PyQt.Использование функций панели задач Windows 7 в PyQt

В частности, если существует возможность использования нового индикатора прогресса (see here) и быстрых ссылок (www.petri.co.il/wp-content/uploads/new_win7_taskbar_features_8.gif).

Если бы кто-нибудь мог предоставить несколько ссылок или просто «еще не реализовано», я был бы очень благодарен.

Большое спасибо.

ответ

23

Как сказал кварк, функциональность не входит в Qt 4.5, но вы можете вызвать API Windows непосредственно из Qt. Это немного работает.

  1. Новый API панели задач отображается через COM, поэтому вы не можете использовать ctypes.windll. Вам нужно создать файл .tlb для доступа к функциям. Получите определение интерфейса для ITaskbarList от this forum post или из окна SDK. Сохраните его в файл под названием, например. TaskbarLib.idl.

  2. Создайте файл .tlb. Вероятно, вам понадобится SDK для Windows или получить компилятор IDL из другого места.

    midl TaskbarLib.idl /tlb TaskbarLib.tlb 
    
  3. Загрузите .tlb (вам нужны Win32 расширения для Python, http://python.net/crew/skippy/win32/Downloads.html):

    import comtypes.client as cc 
    cc.GetModule("TaskbarLib.tlb") 
    
  4. Создание объекта TaskbarList. Функция для установки индикатор находится в интерфейсе 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

3

Не реализовано в Qt 4.5, но in the works for Qt 4.6 появляется. PyQt не будет завершать 4.6 до официального выпуска Qt 4.6, но вы можете играть с 4.6 snapshot s или проверить Qt repository и посмотреть, поддерживает ли версия C++ нужные функции. Если это произойдет, PyQt 4.6 также поддержит его.

Добавлено: list of 4.6 features не показывает явную поддержку Windows 7, но это не значит, что у вас не будет того, что вы хотите, поскольку, по крайней мере, если я правильно понимаю, скорее всего, они сбросят эту функциональность в существующий виджет.

5

Там является Qt надстройку, которая реализует все расширения панели задач Windows 7. Он называется Q7Goodies. Он поставляется с привязками PyQt, поэтому, вероятно, это самый простой способ использовать возможности Windows 7 в PyQt.