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 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
| # !/usr/bin/python
# -*- coding:Latin-1 -*-
import wx
import wx.grid as gridlib
class Grid(gridlib.Grid):
def __init__(self, parent,li1,li2,sav):
gridlib.Grid.__init__(self, parent, -1,pos=(150,150),size=(300,100))
self.CreateGrid(3, 3)
parent.Bind(wx.EVT_MOTION, self.Deplace_tableau)
self.Bind(gridlib.EVT_GRID_CELL_LEFT_DCLICK,self.selectionne_tableau)
self.deplacer='NON'
def Deplace_tableau(self, event):
""" Appelé lors du déplacement de la souris."""
if self.deplacer!='OUI':
return
pt = event.GetPosition()
self.Move(pt)
def selectionne_tableau(self,event):
''' Change (ou réinitialise) la couleur du tableau et donne alternativement à self.deplacer les valeurs
'OUI' ou 'NON' permettant ainsi le déplacement du tableau.'''
# Les couleurs du tableau sont réinitialisées et le déplacement n'est plus autorisé.
if self.deplacer=='OUI':
self.deplacer='NON'
self.SetLabelBackgroundColour(wx.NullColour)
self.SetGridLineColour( (192, 192, 192, 255))
return
# Les couleurs du tableau sont modifiées et le déplacement est autorisé.
else:
self.deplacer='OUI'
self.SetLabelBackgroundColour(wx.RED)
self.SetGridLineColour(wx.RED)
class Fentre_prin(wx.Frame):
def __init__(self, parent, title,li1,li2,par,sav):
wx.Frame.__init__(self, parent, -1, title,size=(800,600))
ma_scroll_window = wx.ScrolledWindow(self)
ma_scroll_window.SetBackgroundColour(wx.WHITE)
ma_scroll_window.SetScrollbars(20, 20, 55, 40)
# Création des différents widgets :
### bouton :
b1 = wx.Button(ma_scroll_window, -1, u"Quitter")
self.Bind(wx.EVT_BUTTON, self.quitter, b1)
### richtext :
self.ma_RichText= wx.TextCtrl(ma_scroll_window, -1, u"Bonjour !",size=(700,400))
self.ma_RichText.WriteText('Il faut un double click dans le tableau pour pouvoir le déplacer !')
### grid :
tableau2=Grid(self.ma_RichText,li1,li2,sav)
self.ma_RichText.Layout()
# Création du sizer et positionnement des wigets :
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(b1, 0, wx.ALL, 5)
sizer.Add(self.ma_RichText, 0, wx.ALL, 5)
# Le sizer est lié au conteneur :
ma_scroll_window.SetSizer(sizer)
ma_scroll_window.Layout()
def quitter(self, evt):
self.Close()
class Debut(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, -1, title,
pos=(150, 150), size=(100, 200),style=wx.DEFAULT_DIALOG_STYLE)
# Conteneur :
panel = wx.Panel(self)
# Boutons :
btn = wx.Button(panel, -1, u"Quitter")
btn1 = wx.Button(panel, -1, u"Nouveau")
self.Bind(wx.EVT_BUTTON, self.quitter, btn)
self.Bind(wx.EVT_BUTTON, self.nouveau_tableau, btn1)
# Sizer :
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(btn, 0, wx.ALL, 10)
sizer.Add(btn1, 0, wx.ALL, 10)
panel.SetSizer(sizer)
panel.Layout()
def quitter(self, evt):
self.Close()
def nouveau_tableau(self,evt):
a=['colonne 1','colonne 2']
b=['ligne 1','ligne 2']
c=[]
frame = Fentre_prin(None, u"Tableau",a,b,self,c)
frame.Show(True)
return True
class MyApp(wx.App):
def OnInit(self):
frame = Debut(None, u"Début")
self.SetTopWindow(frame)
frame.Show(True)
return True
try:
app = MyApp()
except:
app = MyApp(redirect=True)
app.MainLoop() |
Partager