Korzystanie z funkcji paska zadań Windows 7 W PyQt

Szukam informacji na temat integracji niektórych nowych funkcji paska zadań systemu Windows 7 z moimi aplikacjami PyQt.

Szczególnie jeśli istnieje już możliwość użycia nowego wskaźnika postępu (patrz tutaj ) oraz szybkich linków (www.petri.co.il/wp-content/uploads/new_win7_taskbar_features_8.gif).

Jeśli ktoś mógłby podać kilka linków lub po prostu "jeszcze nie zaimplementowany", byłbym bardzo wdzięczny.

Wielkie dzięki.

Author: WrongAboutMostThings, 2009-11-15

3 answers

Jak powiedział quark, funkcjonalność nie jest w Qt 4.5, ale można wywołać windows API bezpośrednio z Qt. To trochę pracy.

  1. Nowy interfejs API paska zadań jest wyświetlany przez COM, więc nie można używać ctypes.windll . Musisz stworzyć .plik tlb, aby uzyskać dostęp do funkcji. Get the interface definition for ITaskbarList from this forum post , or from the Windows SDK. Zapisz go do pliku o nazwie np. TaskbarLib.idl .

  2. Utwórz .plik tlb. Prawdopodobnie będziesz potrzebował Windows SDK lub kompilatora IDL z innego miejsca.

    midl TaskbarLib.idl /tlb TaskbarLib.tlb
    
  3. Załaduj .tlb (potrzebujesz rozszerzeń Win32 dla Pythona, http://python.net/crew/skippy/win32/Downloads.html):

    import comtypes.client as cc
    cc.GetModule("TaskbarLib.tlb")
    
  4. Utwórz obiekt TaskbarList. Funkcja ustawiania paska postępu znajduje się w interfejsie ITaskbarList3:

    import comtypes.gen.TaskbarLib as tbl
    taskbar = cc.CreateObject(
        "{56FDF344-FD6D-11d0-958A-006097C9A090}",
        interface=tbl.ITaskbarList3)
    
  5. Teraz możesz wywołać funkcje API:

    taskbar.HrInit()
    taskbar.SetProgressValue(self.winId(),40,100)
    

Oto kompletny przykładowy skrypt . Źródła: 1 2

 23
Author: jdm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-16 20:05:26

Istnieje dodatek Qt, który implementuje wszystkie rozszerzenia paska zadań systemu Windows 7. Nazywa się Q7Goodies . Jest wyposażony w wiązania PyQt, więc jest to prawdopodobnie najprostszy sposób na skorzystanie z funkcji Windows 7 W PyQt.

 5
Author: torn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-08 17:55:47

Nie zaimplementowane w Qt 4.5, ale w pracach dla Qt 4.6 pojawia się. PyQt nie zawija 4.6 dopóki Qt 4.6 nie zostanie oficjalnie wydany, ale możesz pobawić się migawką 4.6s lub sprawdzić repozytorium Qt i sprawdzić, czy Wersja C++ obsługuje pożądane funkcje. Jeśli tak, to PyQt 4.6 będzie go również wspierać.

Dodano: lista funkcji 4.6 nie pokazuje wyraźnego wsparcia dla Windows 7, ale to nie znaczy, że nie będzie miał tego, co chcesz, ponieważ, w przynajmniej jeśli dobrze rozumiem, prawdopodobnie będą one złożyć tę funkcjonalność do istniejącego widżetu.

 3
Author: quark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-15 03:04:59