2009-11-15 2 views
12

새로운 Windows 7 작업 표시 줄 기능 중 일부를 PyQt 응용 프로그램에 통합하는 방법에 대한 정보를 찾고 있습니다.PyQt의 Windows 7 작업 표시 줄 기능 사용

특히 진행률 표시기 (see here)와 빠른 링크 (www.petri.co.il/wp-content/uploads/new_win7_taskbar_features_8.gif)를 사용할 수있는 경우가 있습니다.

누군가가 몇 가지 링크를 제공 할 수 있거나 "아직 구현되지 않았습니다"라고 말하면 매우 감사 할 것입니다.

고마워요.

답변

23

quark가 말했듯이이 기능은 Qt 4.5에 없지만 Qt에서 직접 Windows API를 호출 할 수 있습니다. 그것의 약간의 일.

  1. 새 작업 표시 줄 API는 COM을 통해 노출되므로 ctypes.windll을 사용할 수 없습니다. 함수에 액세스하려면 .tlb 파일을 만들어야합니다. this forum post 또는 Windows SDK에서 ITaskbarList에 대한 인터페이스 정의를 가져옵니다. 예 :라는 파일에 저장하십시오. TaskbarLib.idl.

  2. .tlb 파일을 만듭니다. 아마도 Windows SDK가 필요하거나 다른 곳에서 IDL 컴파일러를 얻을 수 있습니다.

    midl TaskbarLib.idl /tlb TaskbarLib.tlb 
    
  3. 로드 .TLB (파이썬, http://python.net/crew/skippy/win32/Downloads.html에 대한 Win32에서 확장 필요) :

    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는 Qt 4.6이 공식적으로 출시 될 때까지 4.6을 감싸지 않을 것이지만 4.6 snapshot으로 게임을하거나 Qt repository을 체크 아웃하고 C++ 버전이 원하는 기능을 지원하는지 확인하십시오. 만약 그렇다면 PyQt 4.6도이를 지원할 것입니다.

추가 : list of 4.6 features은 명시 적으로 Windows 7 지원을 표시하지 않지만 원하는대로 사용할 수 없다는 것을 의미하지는 않습니다. 적어도 필자가 올바르게 이해하면 해당 기능을 기존 위젯.

5

는 Qt는이 부가 기능에 그 모든 윈도우 7 작업 표시 줄 확장을 구현합니다. Q7Goodies이라고합니다. PyQt 바인딩이 제공되므로 PyQt의 Windows 7 기능을 이용하는 가장 쉬운 방법 일 것입니다.

관련 문제