2017-05-22 12 views
0

노트북과 일부 페이지로 창을 설정하려고합니다. 페이지 내에는 몇 가지 항목이 있습니다 (예제 코드 참조).Python gtk 노트북 포커스 체인

독자적으로 탭 키와 화살표 키를 처리하고 싶습니다. 화살표를 페이지 제목으로 이동하려면 화살표를 위로 놓고 싶지 않습니다. 왼쪽/오른쪽 화살표 키를 눌러 페이지를 순환시키지 마십시오. 나는 탭 키가 엔트리를 순환하는 것을 원하지 않는다.

키 누르기 신호에 연결하고 탭 또는 화살표 키를 확인하는 것은 실제로 작동하지 않습니다.

포커스 체인을 변경하려고했으나 페이지 제목이나 왼쪽/오른쪽 화살표가있는 페이지를 순환합니다.

어떤 도움이나 아이디어라도 높이 평가됩니다.

#!/usr/bin/env python 

import pygtk 
import gtk 

class NotebookExample: 


    def __init__(self): 
     window = gtk.Window(gtk.WINDOW_TOPLEVEL) 
     window.set_size_request(200,200) 

     notebook = gtk.Notebook() 
     notebook.set_tab_pos(gtk.POS_TOP) 

     notebook.show() 

     hbox1 = gtk.HBox() 
     notebook.append_page(hbox1, gtk.Label("Page1")) 
     hbox2 = gtk.HBox() 
     notebook.append_page(hbox2, gtk.Label("Page2")) 

     window.add(notebook) 

     entry1 = gtk.Entry() 
     entry2 = gtk.Entry() 
     entry3 = gtk.Entry() 
     entry1.set_width_chars(5) 
     entry2.set_width_chars(5) 
     entry3.set_width_chars(5) 

     hbox1.pack_start(entry1, False, False, 10) 
     hbox1.pack_start(entry2, False, False, 10) 
     hbox1.pack_start(entry3, False, False, 10) 

     hbox1.set_focus_chain([entry2, entry3]) 

     window.show_all() 

def main(): 
    gtk.main() 
    return 0 

if __name__ == "__main__": 
    NotebookExample() 
    main() 

답변

0

발견. 키 - 프레스 이벤트를 수신하고 이벤트에 대해 호출되는 다른 핸들러를 중지 "진정한 반환

. 더 이벤트를 전파하기 위해 거짓.

 window.connect("key-press-event", self.do_key_press) 

    def do_key_press(self, widget, event): 
     if gtk.gdk.keyval_name(event.keyval) == 'Tab': 
      print "tab" 
      return True 
     if gtk.gdk.keyval_name(event.keyval) == 'Left' or gtk.gdk.keyval_name(event.keyval) == 'Right': 
      print "cursor" 
      return True 
     return