2010-02-01 34 views
0

我创建了一个对话框,找出聚焦的元素。 这就是我写道:pygtk:找出聚焦的元素


import gtk 
import gobject 

class FocusedElementPath(gtk.Dialog): 
    def __init__(self, parent, title=None): 
     gtk.Dialog.__init__(self, title or 'Show path', parent) 

     self.catch_within = parent  
     self.catch_focus = True 

     self.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK) 

     again_btn = gtk.Button('',gtk.STOCK_REFRESH) 
     again_btn.connect('activate', self.refresh_pressed) 
     again_btn.show() 

     self.action_area.add(again_btn) 

     self.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL) 

     self.action_area.set_layout(gtk.BUTTONBOX_EDGE) 
     self.path = gtk.Label() 
     self.path.show() 

     self.vbox.add(self.path)   

    def refresh_pressed(self, btn): 
     self.catch_focus = True 

    def do_focus_out_event(self, evt): 
     nl = self.catch_within.get_focus() 
     if nl: 
      self.catch_within.activate_focus() 
      self.path.set_text(repr(nl))  
     else: 
      self.path.set_text('None')  
     gtk.Dialog.on_focus_event(self, evt) 

gobject.type_register(FocusedElementPath) 

的问题是,它返回先前的焦点内容。 有什么方法可以找出当前的焦点元素? 我已经尝试过不同的事件(对话框和窗口),但没有任何帮助:( 我在做什么错误或我如何正确地这样做?

回答

1

gtk.Window.get_focus(也可gtk.Dialog)将返回当前焦点孩子

无论如何,我不太明白你想在这里实现什么...

+0

我想找出父窗口焦点元素 – Daniel