1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
| #! /usr/bin/env python
#-*- coding: utf-8 -*-
import wx
u'''Il est primordial de s habituer à travailler en objet pour conserver
toute la puissance et l efficacité de wxPython'''
class MaFenetre(wx.Frame):
u''' Fenêtre principale de l application.
A noter que toutes mes chaines de caractères commencent par la lettre
u située avant le délimiteur, ce qui garantit une interprétation unicode
par python.
Associée à la deuxième ligne du script donnant à python l encoge utilisé,
ici utf-8, et à l enregistrement du fichier dans le même encodage, je suis sûr
que ce script fonctionnera toujours quel que soit l encodage local de l OS.'''
def __init__(self):
wx.Frame.__init__(self, None,-1,title=u"Paramètres Quizz",size=(520,300),style=wx.DEFAULT_FRAME_STYLE)
self.nbk=wx.Notebook(self,-1,size=self.GetClientSize())
pan1=wx.Panel(self.nbk,-1)
pan2=wx.Panel(self.nbk,-1)
sizer1=wx.GridBagSizer(10,10)
sizer2=wx.GridBagSizer(10,10)
#Page 1:
u'''J ai ajoute du texte dans les wx.StaticText
pour prouver que ca fonctionne'''
static1=wx.StaticText(pan1,-1, u"Onglet 1, position (1, 1)")
sizer1.Add(static1,pos=(1,1))
static2=wx.StaticText(pan1,-1, u"Onglet 1, position (2, 1)")
sizer1.Add(static2,pos=(2,1))
static3=wx.StaticText(pan1,-1, u"Onglet 1, position (1, 2)")
sizer1.Add(static3,pos=(1,2))
pan1.SetSizer(sizer1)
pan1.SetAutoLayout(True)
self.nbk.AddPage(pan1,"1er onglet")
#Page 2:
static4=wx.StaticText(pan2,-1, u"Onglet 2, position (1, 1)")
sizer2.Add(static4,pos=(1,1))
static5=wx.StaticText(pan2,-1, u"Onglet 2, position (2, 1)")
sizer2.Add(static5,pos=(2,1))
static6=wx.StaticText(pan2,-1, u"Onglet 2, position (1, 2)")
sizer2.Add(static6,pos=(1,2))
pan2.SetSizer(sizer2)
pan2.SetAutoLayout(True)
self.nbk.AddPage(pan2,"2eme onglet")
u'''Pour que l application se ferme correctement, toujours
prévoir la destruction de la fenêtre principale lors de sa
fermeture, en interceptant l évènement wx.EVT_CLOSE'''
self.Bind(wx.EVT_CLOSE, self.OnClose)
u'''Intercepter l évènement wx.EVT_SIZE de la fenêtre pour
adapter la taille des éléments non gérés par des sizers (ici
le notebook) lorsque la taille de la fenêtre est modifiée.'''
self.Bind(wx.EVT_SIZE, self.OnSize)
def OnClose(self, event):
self.Destroy()
def OnSize(self, event):
self.nbk.SetSize(self.GetClientSize())
class MonApp(wx.App):
u'''En wxPython il y a obligation de créer une instance de wx.App
pour pouvoir utiliser les wx.Widgets. On y déclare notre fenêtre
comme étant la fenêtre principale de l application (wx.App.SetTopWindow())'''
def OnInit(self):
top3 = MaFenetre()
top3.Show()
self.SetTopWindow(top3)
return True
app = MonApp() #instance de l'application
u'''On lance la boucle de gestion des évènements de wxPython
qui ne s arrêtera qu à la destruction de la fenêtre principale'''
app.MainLoop() |