2014-03-31 3 views
3

OS 기반 리눅스 (suse, 우분투)에서 Python PyGTK 라이브러리를 사용하고 있습니다. 여러 디스플레이 모니터가있는 장치 작업.python pygtk 특정 디스플레이 모니터에 창을 꽂는 방법

나는 장치에 연결된 특정 디스플레이 모니터에 전체 화면 창 (파이썬, gtk.Window)을 넣으려고합니다.

나는 다음과 같은 코드를 사용하고 있습니다 :

n_monitors = gtk.gdk.Screen.get_n_monitors() # Get number of monitors. 
gtk.gdk.Screen.get_monitor_geometry(*monitor_number*) # Get the size of a specific monitor. 

두 번째 API는 모니터 크기를 반환하고 정보를 오프셋. gtk.Window.move(offset_x, offse_y)은 특정 모니터에서 창을 이동하는 데 사용할 수 있습니다.

항상 작동하는 것은 아니지만. 윈도우가 마우스 위치에 친화적 인 것처럼 보이거나 모니터 해상도가 동일하지 않으면 작동하지 않습니다.

이 문제를 완화하는 데 도움이되는 gtk.Window의 속성이 있습니까?

gtk.Window.set_position(gtk.WIN_POS_NONE) 
gtk.Window.set_gravity(gtk.gdk.GRAVITY_NORTH_WEST) 

어떤 아이디어 : 나는 도움이되지 않았다 다음과 함께 연주했습니다.

+0

좀 더 자세한 정보로 업데이트되었습니다 .. – Feru

답변

5

귀하의 모니터는 모두 화면을 집합 적으로 형성합니다. 모니터를 조회하여 모니터에 대해 알 수 있습니다. 그런 다음 모니터의 창 (x, y)을 놓음으로써 주어진 모니터에 창을 배치 할 수 있습니다.

당신의 창을 가정하면,이

screen = window.get_screen() 

같은 화면을 얻을 다음이

monitors = [] 
for m in range(screen.get_n_monitors()) 
    monitors.append(screen.get_monitor_geometry(m) 

모니터 같은 모니터 데이터를 얻을 수, 숫자 0,1,2 window되어 있습니다 .. . 다음과 같이 현재 모니터를 얻을 수 있습니다.

screen.get_monitor_at_window(screen.get_active_window()) 

모니터에서 모니터의 (x, y)를 창 (x, y)에 추가합니다. 그 X, Y 값을 계산 한 다음 창을 이동 :

window.move(x,y) 

내가 here 제공 비슷한 답변을 참조하십시오.

+0

starfry에 답해 주셔서 감사합니다. 나는 당신이 제안하고있는 것을 살펴보고 그 결과를 알려줄 것이다. – Feru