Использование функций панели задач Windows 7 в PyQt - PullRequest
12 голосов
/ 15 ноября 2009

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

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

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

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

Ответы [ 3 ]

23 голосов
/ 16 ноября 2009

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

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

  2. Создать файл .tlb. Вам, вероятно, понадобится Windows SDK или вы получите компилятор 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)
    

Вот полный пример сценария . Источники: 1 2

5 голосов
/ 08 сентября 2010

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

3 голосов
/ 15 ноября 2009

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

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

...