2017-12-22 4 views
0

몇 개의 RadioMenuItem이있는 메뉴가 있습니다.Gtk RadioMenuItem을 활성화하지 않고 'selected'로 설정하는 방법

사용자가 옵션을 선택하면 내 프로그램이 메뉴를 다시로드하므로 포인터가 선택한 항목으로 다시 설정됩니다.

프로그래밍 방식으로 다시 설정해야하지만 연결된 기능을 활성화하지 않아야합니다. RadioMenuItem.set_active(True)이 기능을 활성화합니다. 실제로 메뉴가 그려지는 경우에도 set_active에 전화하지 않아도 내 함수가 호출되는 것 같습니다.

어떻게합니까?

+1

저는 보통 Python으로 프로그래밍하지 않지만 http://www.pygtk.org/pygtk2tutorial/ch-AdvancedEventAndSignalHandling.html에 명시된대로 핸들러 ID와 object.disconnect (handler_id)를 사용하여 시도해 보셨습니까? –

+0

이것은 [XY 문제] (https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)처럼 보입니다. 왜 그 메뉴 안에있는 위젯을 다시 설정/파괴하는 방식으로 메뉴를 "다시로드"하는 것입니까? 네가 여기서 뭔가 잘못하고 있다는 느낌을 떨칠 수가 없어. –

+0

새 데이터로 메뉴 항목을 업데이트하고 있습니다. 단지 set_label()을 호출하기 만하면됩니다. 이것은 '정품 인증'을 유발하는 것 같습니다. – bluppfisk

답변

0

active은 RadioMenuItem에 연결하는 잘못된 신호입니다. 정상적인 MenuItem에서도 완벽하게 작동하지만.

신호 대신 toggled 신호를 연결 한 다음 콜백 함수를 체크하여 위젯의 get_active() 함수가 true를 반환하는지 여부를 확인하면 원하는 동작이 발생합니다.

관련 문제