Bonsoir à tous,
J'ai découvert wxPython il y a quelque jours et je cherche à savoir si il est possible d' insérer un widget grid dans un wxRichTextCtrl...
Si quelqu'un a la réponse...
Bonsoir à tous,
J'ai découvert wxPython il y a quelque jours et je cherche à savoir si il est possible d' insérer un widget grid dans un wxRichTextCtrl...
Si quelqu'un a la réponse...
Voici la solution que j'ai trouvée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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()
- J'utilise en fait la RichText comme un conteneur.
- Je laisse volontairement ce sujet ouvert pour permettre à tous de le corriger ou de l'améliorer...
- Je cherche encore à déplacer ce tableau en maintenant le bouton gauche enfoncé et donc là aussi si quelqu'un a une idée...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager