2013-12-12 3 views
1

파이썬과 PyGTK를 사용하여 WiFi 관리 인터페이스를 작성하려고합니다.PyGTK에서 차단할 인터페이스 얻기

사용자는 gtk.TreeView에 사용 가능한 네트워크 목록을 볼 수 있습니다. 그런 다음 버튼을 클릭하여 무선 네트워크를 다시 검색하는 옵션이 있습니다. 어떤 이유로 든 재검색 프로세스는 이며 실제로는입니다. 사실 네트워크의 목록이 실제로 재검사 되더라도 단추를 클릭해도 아무런 변화가없는 것처럼 느껴집니다. 내가하고 싶은 무엇

는 지연의 초, 인터페이스 블록의 몇 가지를 추가하는 것입니다 그래서 사용자 내가 네트워크의 목록을 표시하는 데 사용하는 gtk.TreeView 취소되었는지보고하는 gtk.Spinner를 표시 재분배.

분명히 time.sleep()은 올바른 방법이 아닙니다. 이 일을하는 우아한 방법이 있습니까?

답변

3

LOC 내가 가지고 올 수있는 짧은 대답에 대해서 : 내가 실현 번째 눈에

from threading import Thread 
import gobject 

gobject.threads_init() 

time_to_wait = 2.0  # time in seconds 
nonblocking_wait = Thread(target=sleep, args=(timetowait,)) 
nonblocking_wait.start() 

while nonblocking_wait.is_alive(): 
    nonblocking_wait.join(.05) 
    gtk.main_iteration_do(True)  # blocks if no event is pending 

, 그 어떤 독자를위한 수면 스레드의 관련성은 불분명 수 있습니다. time_to_wait + 0.05 초 (+ 오버 헤드)의 최대 시간 제한을 설정하는 것이 목적입니다. 당신은 카운터 또는 유사한 접근법으로 그것을 할 수 있지만, 이런 식으로 당신은 유휴 루프에서 CPU에 쓸모없는로드를 방지합니다.

이 방법은 여전히 ​​그리기 업데이트를 처리 할 수 ​​있습니다.

progressbar-updates 또는 while 루프에 배치해야하는 항목.

+0

LOC은 무엇을 의미합니까? –

+0

loc = 코드 줄 –

+0

이 대답은 내 문제를 해결했지만 요청한 것처럼 인터페이스를 차단하지는 못합니다. –