2010-09-20 3 views
0

Je ne comprends pas très bien comment obtenir le cadre supérieur dans une application. Je commence ma demande avec l'habituelwxPython - Comment obtenir le cadre supérieur ou l'objet Application

class AppFrame(ClientGUI.MyFrame): #ClientGUI.MyFrame generated by wxformbuilder. 
def __init__(self): 
    # create some panels. 
    # Create some object classes that invoke objects of other classes. 
    # .. do other stuff ... 

if __name__ == '__main__': 
    app = wx.App(0) 
    frame = AppFrame() 
    frame.Show() 
    app.MainLoop() 

Étant donné que j'ai une séquence de classe d'invocation profondément imbriquée, je voudrais un de mes objets dans le bas de la hiérarchie d'invocation pour accéder à certains panneau dans l'application (essentiellement mettre des trucs gui dans ce panneau). Une façon dont je pourrais penser est d'inclure l'objet d'application ('self') comme paramètre dans ma séquence d'invocation d'objet de sorte que le dernier objet ait accès à l'objet d'application. Mais cela semble plutôt compliqué étant donné que tous les objets intermédiaires n'ont pas besoin d'accéder à l'application.

Existe-t-il un moyen propre d'accéder à l'objet d'application? En outre, à quoi exactement veux-je accéder - l'objet "frame" ou l'objet "app"? Je ne suis pas sûr de la différence entre ces deux objets.

Répondre

2

Je ne recommande pas l'habitude de le faire de cette façon, mais la méthode que vous voulez est probablement:

topframe = wx.GetTopLevelParent()

Si vous avez besoin de communication inter-classe, je l'habitude d'utiliser PubSub . En tout cas, j'espère que ça aide!

+0

Merci pour le commentaire. Laisse-moi essayer et reviendrai là-dessus. Cordialement. –

+0

Ça marche! :-). –

Questions connexes