2012-02-22 1 views
1

기계의 그래픽 사용자 인터페이스에서 작업 중입니다. 메인 루프 밖에서 (gtk-lock 내부의 idle_add 함수를 사용하여) 메인 스레드에서 언제든지 다시 그릴 수있는 창에 콤보 박스를 사용합니다. 이것은 특정 버튼 (위젯이 아닌 실제 버튼)이 기계에서 눌 렸을 때 발생합니다. 콤보 박스가 열리는 동안 이런 일이 발생하면 Gtk-Warning이 발생합니다. 'WIDGET REALIZED FOR EVENT'오류가 발생하여 프로그램이 멈 춥니 다. Python gtk : 콤보 상자가 열려 있는지 확인하는 방법?

나는 코드를 추가하려고 :

combo.set_active(-1) 
    while gtk.events_pending(): 
      gtk.main_iteration() 

을하지만이 문제가 해결되지 않았다.

나는 combo.is_open() 또는 combo.close()와 같은 기능을 찾고 있지만 존재하지 않는 것 같습니다. 콤보와 관련된 신호는 '변경', '이동 활성', '팝업'및 '팝 다운'이지만 첫 번째는 콤보에서 텍스트를 선택하고 다른 신호는 키 바인딩 신호 일 때만 전송됩니다.

콤보가 열려 있는지 (선택되어 있는지) 확인할 수있는 방법이 있습니까?

답변

2

popup-shown 속성을 사용하십시오.

notify::popup-shown에 연결하라는 설명서도 필요한 것을 들려줍니다.

+0

감사! 또한 문서에서'gtk_combo_box_popdown()'함수를 사용하여 콤보를 닫습니다. 그래서이게 내 문제를 해결해 .. –

관련 문제