2010-11-03 3 views
0

Je commence avec PyGtk et j'ai du mal à comprendre l'interaction des fenêtres.Comment puis-je passer des variables entre deux classes/fenêtres dans PyGtk?

Ma question très simple est la suivante.
Supposons que j'ai une classe qui crée simplement une fenêtre avec un champ de saisie de texte. Lorsque vous cliquez sur le bouton "OK" dans cette fenêtre, je veux passer le texte dans le champ d'entrée à une autre fenêtre, créée par une autre classe, avec un menu gtk et créer une nouvelle entrée avec le contenu du champ de texte.

Comment l'implémenter? Appelons A le Menu et B la fenêtre avec le champ de saisie de texte

Répondre

2

Si j'ai bien compris A appelle B et que le bouton Ok est enfoncé dans B, A doit mettre à jour son menu.

Dans ce scénario, vous pouvez créer une fonction de rappel dans A, destinée à être appelée lorsque le bouton OK de B est enfoncé. Lorsque vous créez B, vous pouvez passer ce rappel, voici un exemple:

class B(gtk.Window): 
    def __init__(self, callback): 
     gtk.Window.__init__(self) 

     self.callback = callback 
     # Create components: 
     # self.entry, self.ok_button ... 

     self.ok_button.connect("clicked", self.clicked) 

    def clicked(self, button): 
     self.callback(self.entry.get_text()) 

class A(gtk.Window): 
    def create_popup(self): 
     popup = B(self.popup_callback) 
     popup.show() 

    def popup_callback(self, text): 
     # Update menu with new text 
     # ... 
Questions connexes