2013-06-03 4 views
0

У меня есть базовая программа gtk для python, чтобы показать позицию окна, есть ли простой способ обновить ее при ее перемещении?PyGtk - функция вызова при изменении положения окна?

#!/usr/bin/python 

import gtk 

class app(gtk.Window): 

    def __init__(self): 
    super(app, self).__init__() 

    self.set_position(gtk.WIN_POS_CENTER) 
    self.set_title("Window Position Test") 
    self.set_decorated(True) 
    self.set_has_frame(False) 
    self.set_resizable(False) 
    self.set_default_size(320, 50) 
    self.connect("destroy", gtk.main_quit) 
    vbox = gtk.VBox(spacing=4) 
    hbox = gtk.HBox(spacing=4) 

    self.pos_label = gtk.Label() 
    vbox.add(self.pos_label) 

    self.add(vbox) 

    self.update_pos() 
    self.show_all() 


    def update_pos(self): 
    ''' Get window position, display + log ''' 
    pos = str(self.get_position()) 
    print(pos) 
    self.pos_label.set_label(pos) 


app() 
gtk.main() 

ответ

0

Просто нужно приложить к "Configure-событие" в конце:

#!/usr/bin/python 

import gtk 

class app(gtk.Window): 

    def __init__(self): 
    super(app, self).__init__() 

    self.set_position(gtk.WIN_POS_CENTER) 
    self.set_title("Window Position Test") 
    self.set_decorated(True) 
    self.set_has_frame(False) 
    self.set_resizable(False) 
    self.set_default_size(320, 50) 
    self.connect("destroy", gtk.main_quit) 
    vbox = gtk.VBox(spacing=4) 
    hbox = gtk.HBox(spacing=4) 

    self.pos_label = gtk.Label() 
    vbox.add(self.pos_label) 

    self.add(vbox) 

    self.update_pos() 
    self.show_all() 

    self.connect("configure-event", self.update_pos) 


    def update_pos(self, *args): 
    ''' Get window position, display + log ''' 
    pos = str(self.get_position()) 
    print(pos) 
    self.pos_label.set_label(pos) 


app() 
gtk.main() 
Смежные вопросы