Bonjour,
Je débute avec wxpython, je me débrouille pour l'instant, mais voila je butte sur un probleme, j'essaie d'utiliser un tableau dans une de mes formes, un des tableaux qui semble interressant c'est pygridtablebase que j'ai retrouvé dans les démos de wxpython, j'ai tenté d'adapter ce code dans le mien, mais voila que ca ne fonctionne pas tres bien. Donc en fouillant sur le net j'ai trouvé d'autre code que j'ai réussi a inclure dans mes formulaires, mais une fois ceci fait j'essaie de jouer avec (par exemple utilisation d'un bouton me permettant d'ajouter une colonne, autre bouton pour ajouter une ligne de données, etc).
donc voici en résumé mes trois fichier python: qui ouvre mon formulaire et defini les actions de mes boutons 'main.py', format du formulaire 'formPrincipale.py', format du tableau 'tableau.py'
fichier: main.py
fichier formPrincipale.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 import wx, formPrincipale class mainframe(formPrincipale.MyFrame1): def ajout_colonne( self, event ): self.table.ApppendCols(1) self.grid.ForceRefresh() class MyApp(wx.App): def OnInit(self): frame = mainframe(None) self.SetTopWindow(frame) frame.Show(True) return True app = MyApp(True) app.MainLoop()
fichier tableau.py
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 import wx class MyFrame1 ( wx.Frame ): def __init__( self, parent ): wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 653,637 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL ) bSizer3 = wx.BoxSizer( wx.VERTICAL ) bSizer3.SetMinSize( wx.Size( 585,501 ) ) self.m_button = wx.Button( self, wx.ID_ANY, u"MyButton", wx.DefaultPosition, wx.DefaultSize, 0 ) bSizer3.Add( self.m_button2, 0, wx.ALL, 5 ) import tableau self.grid = wx.grid.Grid(self) self.table = tableau.TestTable() self.grid.SetTable(self.table, True) bSizer3.Add( self.grid, 0, wx.ALL, 5 ) self.SetSizer( bSizer3 ) self.Layout() # Connect Events self.m_button.Bind( wx.EVT_BUTTON, self.ajout_colonne ) def __del__( self ): pass # Virtual event handlers, overide them in your derived class def ajout_colonne( self, event ): event.Skip()
Il y a quelque chose que je ne comprend pas bien car en faisant des recherches sur le net je ne comprend pas tres bien comment ca marche car ce que je comprend dans mon code c'est que je crée un tableau (pygridtablebase) dans un autre tableau (wx.grid) Pourquoi? dans certain autres exemple ils construisent leur tableau dans un panel??
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 import wx.grid class TestTable(wx.grid.PyGridTableBase): def __init__(self): wx.grid.PyGridTableBase.__init__(self) self.colLabels = ['ID', 'Description', 'Severity', 'Priority'] self.dataTypes = [wx.grid.GRID_VALUE_NUMBER, wx.grid.GRID_VALUE_STRING, wx.grid.GRID_VALUE_CHOICE + ':only in a million years!,wish list,minor,normal,major,critical', wx.grid.GRID_VALUE_NUMBER + ':1,5', wx.grid.GRID_VALUE_CHOICE + ':all,MSW,GTK,other', wx.grid.GRID_VALUE_BOOL, wx.grid.GRID_VALUE_BOOL, wx.grid.GRID_VALUE_BOOL, wx.grid.GRID_VALUE_FLOAT + ':6,2', ] self.data = [ [1010, "The foo doesn't bar", "major", 1, 'MSW', 1, 1, 1, 1.12], [1011, "I've got a wicket in my wocket", "wish list", 2, 'other', 0, 0, 0, 1.50], [1012, "Rectangle() returns a triangle", "critical", 5, 'all', 0, 0, 0, 1.56] ] def GetNumberRows(self): return 5 def GetNumberCols(self): return 4 def IsEmptyCell(self, row, col): return False def GetValue(self, row, col): try: return self.data[row][col] except IndexError: return '' #return "(%s,%s)" % (self.rowLabels[row], self.colLabels[col]) def SetValue(self, row, col, value): pass def GetColLabelValue(self, col): return self.colLabels[col]
et lorsque je tente d'utiliser les méthodes de pygridtablebase que je retrouve sur le net (appendcol, appendrow, etc..) il me donne l'erreur que la méthode n'existe pas ?
Merci beaucoup de votre aide
PS j'ai simplifié grandement mes fichiers python, alors s'il manque des renseignement laissez le moi savoir.
Pascal
Partager