2012-09-19 3 views
3

내 프레임을 항상 위에 놓고 싶습니다.하지만 실제로는 맨 위에 놓기를 원합니다. 다른 창을 숨기지 않으려합니다. "항상 맨 위에"있더라도. wx.STAY_ON_TOPwx.FRAME_FLOAT_ON_PARENT을 사용하고 있지만 여전히 광산 위에 나타나는 창이 있습니다. 또한 작업 표시 줄이 내 프레임 위에 표시되는 반면 작업 표시 줄은 내 프레임 뒤에 표시됩니다.wxPython : 프레임을 모든 것 위에 놓기

나는 작동하지 않는 많은 것을 시도했다, 상세한 here.

내 프레임을 실제로 어떻게 최상으로 만들 수 있습니까?

+0

겠습니까 그것을 전체 화면을 다음 최소화 충분 허용하지? Windows 만 타겟팅하거나 Gtk 및 Mac에서도 응답해야합니까? –

+0

사용자가 작업 표시 줄에 전혀 액세스 할 수있게 하시겠습니까? –

+0

@PaulMcNett 사용자는 작업 표시 줄에 액세스 할 필요가 없습니다. 솔루션은 Windows 전용으로 예정되어 있습니다. 일부 프레임은 전체 화면이 아니어야하기 때문에 전체 화면은 옵션이 아닙니다. –

답변

1

대부분의 경우 원하지 않는 영향을 미치므로 표준 방법이 없으므로 최상위 플래그를 다시 설정하여 최상위 위치로가는 다른 응용 프로그램을 "덮어 쓰"수 있습니다. 매 x ms마다 값을 설정하는 타이머를 사용하여이 작업을 수행 할 수 있습니다. 또는 Windows에서 포커스를 잃어 버렸을 때 다시 시도 할 수 있습니다. ontop의 플래그를 설정하는 이벤트는 다음과 같습니다

EVT_SET_FOCUS 
EVT_KILL_FOCUS 
+0

진행! 이제 내 앱은 Rosetta Stone과 지속적으로 경쟁하고 있습니다. 분명히 똑같은 일을하고 있습니다. 이 전쟁터의 결과로 전체 화면이 깜박이고 전체 컴퓨터를 사용할 수 없게되었습니다. Rosetta Stone이이를 수행하는 것을 막을 수있는 해결책이라고 생각합니다. 그렇게 할 수있는 방법이 있습니까? –

+0

@RamRachum 당신은 끊임없이 Rosetta Stone의 꼭대기에있는 플래그를 제거하려고 할 수 있습니다. 그러나 파이썬에서 그렇게하는 방법을 모르겠습니다. AutoIt에서 어떻게 할 지 압니다. http://www.autoitscript.com /autoit3/docs/functions/WinSetOnTop.htm 당신이 이미 말했듯이, 그것은 계속 전쟁의 줄다리기가 될 것입니다. 나는 당신이 실제로 Rosetta Stone을 몰수시킬 수 있다고 생각하지 않습니다. – zeebonk

+0

좋습니다! AHK를 사용하여 활성 응용 프로그램을 항상 맨 위에 있지 않게 만드는 스크립트를 만들었습니다. 그리고 난 그냥 Rosetta Stone에서 수동으로 사용하고 작동합니다. 이제 내 응용 프로그램은 Rosetta Stone 위에 있습니다. –

0

봅니다이 사용 :

wx.Frame.SetFocus() 
관련 문제