2012-08-14 1 views
0

내 창 모든 버튼에서 포커스을 비활성화하고 싶습니다. widget.set_can_focus(False)으로 하나의 버튼을 비활성화 할 수 있지만이 기능을 내 윈도우의 모든 버튼에 적용하는 표준 방법을 알고 싶습니다.PyGTK의 여러 버튼에서 '버튼 포커스'를 비활성화하는 방법은 무엇입니까?

참고 : 저는 HBoxVBox 컨테이너를 사용하고 있습니다.

+0

당신은 확실히 당신이'set_can_focus' 줄까? 버튼을 사용하지 않으려면'set_sensitive'를 사용합니다. – Mark

+0

아니요, 버튼에서 '포커스'를 비활성화합니다. 버튼이 아니야. @Mark – omar

답변

3

버튼 목록을 반복하고 "duck typing"을 사용하여 포커스를 비활성화합니다. 예를 들어

:

button_widgets = [button1, button2, ..., buttonN] 

for button in button_widgets: 
    button.set_can_focus(False) 

UPDATE :

방법 버튼을 찾을 수있는 HBox의 또는 중 VBOX의 모든 요소를 ​​통해 루프 : 당신이 HBoxes 또는 VBoxes의 이름에있는 경우

을 버튼이 포함 된 가장 낮은 레이어는 단순히 반복 할 수 있고 버튼을 확인한 다음 목록에 추가 할 수 있습니다.

import gtk 
import pygtk 
hbox = gtk.HBox() 
button1 = gtk.Button('1') 
button2 = gtk.Button('2') 
hbox.add(button1) 
hbox.add(button2) 
for i in hbox: 
    if type(i) == gtk.Button: print i 

출력을 : : 여기가 HBox의 모든 버튼을 출력하는 예입니다

<gtk.Button object at 0x1909320 (GtkButton at 0x171e8e0)> 
<gtk.Button object at 0x19093c0 (GtkButton at 0x171e9a0)> 
+0

윈도우의 모든 버튼을 나열하는 방법을 알고 있습니까? 나는 PyGTK 함수를 의미합니다. – omar

관련 문제