2011-01-16 6 views
1

설명 된대로 here으로 PyGTK를 사용하는 간단한 트레이 아이콘이 있습니다.비동기식으로 PyGTK 트레이 아이콘 업데이트

GTK를 처음 접했을 때 gtk.main()은 동기식이므로 각 UI가 닫힐 때까지 추가 처리를 차단합니다.

주기적으로 (예 : 5 초마다) 업데이트/새로 고침 StatusIcon의 아이콘 - Twisted et al. 이거?

답변

4

gobject.timeout_add()을 사용하여 정기 작업을 추가 할 수 있습니다. 첫 번째 매개 변수는 초 단위 간격이며 두 번째 매개 변수는 호출 할 콜백입니다. bool으로 사용될 때 True으로 평가되는 것을 반환하는 한 콜백이 호출됩니다.

PyGTK FAQ의 20 절, 특히 question 20.7을 참조하십시오.

+0

그게 바로 내가 필요로하는 것입니다. - 고마워요! – AnC

0

트레이 아이콘을 쉽게 새로 고칠 수 없으며 이미 시도한 일부 아이콘에서 가져 와서 실패했습니다. 실제로는 ""을 설명하는 것이 쉽지 않은데 실제로 드롭합니다. 잘못된 설명입니다. .

가 표시하는 상태 아이콘을 생성합니다 : "), 여기

하지만 내가 doc에서, 당신은 gtk.status_icon_new_from_gicon() 방법을 사용하여 상태 아이콘을 설정해야합니다 상태 아이콘을 새로 고치려면 지금까지 무엇을 가지고 a gio.Icon(). 아이콘이 테마가 변경된 아이콘 인 경우 테마가 변경되면 업데이트됩니다.

그래서 당신은 당신이 gio themed icon를 사용하여 아이콘을 만들어야합니다, 지금 당신이 직접 테마 아이콘을 업데이트 할 수 있습니다 상태 아이콘을 새로 고칠이 변경 트레이 상태에 직접적으로 표시됩니다. 귀하의 질문에 대해 지금

:

예 gtk.main() 블록 방금 작업에 신호를 결합해야하고이 신호가 트리거 될 때 동작이 경우에, 실행 할 수 있도록, 신호 대기 액션 콜백에서 상태 이미지를 새로 고칠 코드를 넣을 수 있습니다.

희망은 여기에서 당신을 도왔습니다.

+0

고마워,하지만'self.statusIcon.set_from_stock (gtk.STOCK_JUSTIFY_FILL)'을 가진 간단한 타임 아웃 핸들러는 (위와 같이) 잘 작동했다. 나는 GTK에 대해 깊이 파고 들기 때문에 여러 가지 문제에 직면하게 될 것이라고 확신한다. 그래서 나는 상황이 어떻게 어울리는지를 더 잘 이해할 때 다시 돌아올 것이다. – AnC

+0

@AnC : 글쎄, 언제든지 도와주게되어 기쁘 겠지. 그리고 내 결론 이외에 다른 결론을 내린다면, 행운을 빈다. 그리고 나의 대답으로는 주기성을 읽지 못했기 때문에 당신이 "상태 아이콘 새로 고침"을 원한다는 사실에 너무 빠져서 대답을 잊어 버렸습니다. 미안 해요. – mouad

관련 문제