#!/usr/bin/python3 # -*- coding: iso-8859-1 -*- # verification de la disponibilite de wxPython try: import wx except ImportError: print("Le module wxPython est nécessaire pour cette application.") raise
wx.Frame est la classe de base pour les fenêtres standards. La classe de l'application va hériter de cette classe mère WX.Frame.
import wx # création de la classe de l'application class Fenetre(wx.Frame):
import wx # création de la classe de l'application class Fenetre(wx.Frame): # le constructeur de la classe fenetre hérite de wx.Frame, # il faut appeler le constructeur de la classe mère wx.Frame en passant l'instance en paramètre : # super(wx.Frame, self).__init__(). def __init__(self, parent, id, title, pos, size) : super(wx.Frame, self).__init__(parent, id, title,pos, size) # ancienne manière de procéder # wx.Frame.__init__(self, parent, id, title,pos, size)
Une interface graphique est une hiérarchie d'objets :
La référence du parent est utile quand il faut montrer/masquer des groupes de widgets, les redessiner à l'écran ou tout simplement les détruire quand la fenêtre est fermée. Une bonne habitude consiste à mémoriser la référence du parent.
Le paramètre id est un identifiant unique du widget.
import wx # création de la classe de l'application class Fenetre(wx.Frame): def __init__(self, parent, id, title, pos, size) : super(wx.Frame, self).__init__(parent, id, title,pos, size) self.parent = parent
Pour plus de clarté dans le code, on peut mettre dans une fonction spécifique initialise() la création des widgets et appeler cette fonction dans le constructeur.
import wx # création de la classe de l'application class Fenetre(wx.Frame): def __init__(self, parent, id, title, pos, size) : super(wx.Frame, self).__init__(parent, id, title,pos, size) self.parent = parent self.initialise() def initialise(self): # forcer l'apparition de la fenetre self.Show(True)
import wx # création de la classe de l'application class Fenetre(wx.Frame): def __init__(self, parent, id, title, pos, size) : super(wx.Frame, self).__init__(parent, id, title,pos, size) self.parent = parent self.initialise() def initialise(self): # forcer l'apparition de la fenetre self.Show(True) if __name__ == "__main__": app = wx.App() fenetre_1 = Fenetre(None,wx.ID_ANY,'Première application', (25,25), (400,100))
import wx # création de la classe de l'application class Fenetre(wx.Frame): def __init__(self, parent, id, title, pos, size) : super(wx.Frame, self).__init__(parent, id, title,pos, size) self.parent = parent self.initialise() def initialise(self): # forcer l'apparition de la fenetre self.Show(True) if __name__ == "__main__": app = wx.App() fenetre_1 = Fenetre(None,wx.ID_ANY,'Première application', (25,25), (400,100)) app.MainLoop()