2012-11-30 21 views
5

Moja aplikacja python uruchamia podproces, który tworzy okno pyglet. Gdy okno pyglet się otworzy, znajdzie się przed wszystkimi pozostałymi oknami i zajmie ostrość klawiatury. Chciałbym, aby moje okno pyglet otworzyło się w tle i nie skupiało się. czy to możliwe?Otwórz okno dialogowe bez ustawiania ostrości

wersję okrojoną kodu używam:

import pyglet 

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

używam Windows 7, w przypadku gdy czyni różnicę ..

+0

Dając to po raz drugi, masz dziwny przypadek pojawienia się okna pyglet w/o dając mu dane wejściowe. Może rzeczywiście musisz nauczyć się osadzać kontekst OpenGL appletu pyglet w większej aplikacji? –

Odpowiedz

1

cofania celem jest specyficzny OS:

pyglet nie przewiduje OS specyficzną kontrolę okna. Najprawdopodobniej będziesz musiał użyć sztuczki ad-hoc dla szybkich & brudnych rozwiązań lub spróbuj podejść do niej z rozszerzeniami, takimi jak pywin32, używając Windows API i/lub COM, aby wyświetlić listę stosów aplikacji na pasku zadań, aby cofnąć kradzież fokusa. Możesz także spróbować najpierw utworzyć własne okno (kontener - którym możesz manipulować) - aby przekazać jego kontekst do pygletu.

Opóźnianie kradzież ostrość

Z drugiej strony, jeśli według logiki programu po prostu chcesz, aby opóźnić rzeczywistą pokaz ciebie aplikacji można grać z Widoczność:

import pyglet 

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

więc jeśli nie chcesz grać z delegacją kontekstu okna, prawdopodobnie możesz wykonać następujące czynności:

  1. Uruchom aplikację bez wyświetlania ing okno
  2. znaleźć ostrość bieżącego aktywnego okna poprzez uzyskanie uchwyt/ID
  3. pokazać swoją okno
  4. oddać ostrość do poprzedniego okna

Powyższe zakłada pracę z Windows API . Myślę, że MSDN miał przykłady zmiany ostrości. Jeśli znasz PID twojego bieżącego okna (głównej aplikacji), powinno to uprościć krok 2.

1

myślę, że to może być więcej problemu dotyczącego menedżera okien/okien niż Twoja aplikacja - czy coś takiego będzie pomocne?