2009-11-15 10 views
12

Estoy buscando información sobre la integración de algunas de las nuevas características de la barra de tareas de Windows 7 en mis aplicaciones PyQt.Uso de las funciones de la barra de tareas de Windows 7 en PyQt

Específicamente si ya existe la posibilidad de utilizar el nuevo indicador de progreso (see here) y los enlaces rápidos (www.petri.co.il/wp-content/uploads/new_win7_taskbar_features_8.gif).

Si alguien pudiera proporcionar algunos enlaces o simplemente un "aún no implementado", estaría muy agradecido.

Muchas gracias.

Respuesta

23

Como dijo quark, la funcionalidad no está en Qt 4.5, pero puede llamar a la API de Windows directamente desde Qt. Aunque es un poco trabajo.

  1. La API de la nueva barra de tareas está expuesta a través de COM, por lo que no puede usar ctypes.windll. Necesita crear un archivo .tlb para acceder a las funciones. Obtenga la definición de interfaz para ITaskbarList desde this forum post, o desde el SDK de Windows. Guárdelo en un archivo llamado p. TaskbarLib.idl.

  2. Crea el archivo .tlb. Probablemente necesites el SDK de Windows u obtener un compilador IDL de otro lado.

    midl TaskbarLib.idl /tlb TaskbarLib.tlb 
    
  3. Cargar el .tlb (que necesita las Extensiones de Win32 para Python, http://python.net/crew/skippy/win32/Downloads.html):

    import comtypes.client as cc 
    cc.GetModule("TaskbarLib.tlb") 
    
  4. crear el objeto TaskbarList. La función de ajuste de la barra de progreso se encuentra en la interfaz de ITaskbarList3:

    import comtypes.gen.TaskbarLib as tbl 
    taskbar = cc.CreateObject(
        "{56FDF344-FD6D-11d0-958A-006097C9A090}", 
        interface=tbl.ITaskbarList3) 
    
  5. Ahora puede llamar a las funciones de la API:

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

Aquí hay una complete example script. Fuentes: 1 2

3

No implementado en Qt 4.5, pero aparece in the works for Qt 4.6. PyQt no se ajustará a 4.6 hasta que se publique oficialmente Qt 4.6, pero puede jugar con 4.6 snapshot o pagar en el Qt repository y ver si la versión de C++ admite las características que desea. Si lo hace, PyQt 4.6 lo admitirá también.

Agregado: El list of 4.6 features no muestra el soporte explícito de Windows 7, pero eso no significa que no tendrá lo que desea, ya que, al menos si lo entiendo correctamente, es probable que ellos doblen esa funcionalidad en el widget existente

5

hay un complemento Qt que implementa todas las extensiones de la barra de tareas de Windows 7. Se llama Q7Goodies. Viene con enlaces de PyQt, por lo que esta es probablemente la forma más fácil de aprovechar las características de Windows 7 en PyQt.

Cuestiones relacionadas