2012-11-30 14 views
5

La mia applicazione python avvia un sottoprocesso che crea una finestra di pyglet. Quando si apre la finestra di pyglet, è davanti a tutte le altre finestre e attiva la tastiera. Vorrei che la mia finestra di pyglet si aprisse in background e non focalizzassi. È possibile?Apre una finestra di pyglet senza mettere a fuoco

versione ridotta del codice che sto utilizzando:

import pyglet 

pyglet.window.Window() 
pyglet.app.run() 

sto utilizzando Windows 7, nel caso in cui fa la differenza ..

+0

Dandogli un secondo pensiero, hai un caso strano di spuntare la finestra di pyglet w/o dargli l'input. Forse hai davvero bisogno di imparare come incorporare il contesto OpenGL dell'applet pyglet nella tua applicazione più grande? –

risposta

1

Inversione messa a fuoco è OS specifica:

pyglet non prevede il controllo finestra specifica del sistema operativo. Quindi molto probabilmente dovrai usare un trucco ad-hoc per soluzioni rapide & o provare ad avvicinarti con estensioni come pywin32 usando Windows API e/o COM per elencare attraverso lo stack di applicazioni della barra delle applicazioni per invertire il furto di messa a fuoco. Puoi anche provare a creare la tua finestra personale (contenitore, che puoi manipolare) per poter delegare il suo contesto a Pyglet.

Ritardare rubare fuoco

D'altra parte, se secondo la vostra logica di programma che si desidera solo per ritardare l'effettiva proiezione di voi l'applicazione si può giocare con la visibilità:

import pyglet 

w = pyglet.window.Window() 
w.set_visible(False) 
pyglet.app.run() 

Quindi, se si non vuoi giocare con la delega del contesto della finestra, puoi probabilmente fare quanto segue:

  1. avviare la tua applicazione senza mostrare ing finestra
  2. trovare la messa a fuoco della finestra attiva corrente ottenendo il manico/id
  3. mostrare la vostra finestra
  4. restituire il fuoco alla finestra precedente

È possibile che questo assume a lavorare con le finestre API . Penso che MSDN abbia degli esempi sulla modifica del focus .. Se conosci il PID della tua finestra corrente (applicazione principale) questo dovrebbe semplificare il passo 2.