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.
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.
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 .
-
Utwórz .plik tlb. Prawdopodobnie będziesz potrzebował Windows SDK lub kompilatora IDL z innego miejsca.
midl TaskbarLib.idl /tlb TaskbarLib.tlb
-
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")
-
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)
-
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
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.
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.
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