J'ai créé un fichier wx.grid.Grid avec une classe dérivée wx.grid.PyGridTableBase pour fournir ses données. Je veux aussi contrôler les éditeurs utilisés sur la table. À cette fin, je défini la méthode suivanteErreur de segmentation wxPython avec les éditeurs
def GetAttr(self, row, col, kind):
attr = wx.grid.GridCellAttr()
if col == 0:
attr.SetEditor(wx.grid.GridCellChoiceEditor())
return attr
Cependant, cela provoque une erreur de segmentation à chaque fois que je tente de créer l'éditeur dans la grille. Je l'ai fait essayer de créer l'éditeur au préalable et en passant en tant que paramètre, mais reçu l'erreur:
TypeError: in method 'GridCellAttr_SetEditor', expected argument 2 of type
'wxGridCellEditor *'
Je soupçonne que la deuxième erreur est provoquée par la prise de possession GridCellAttr hors puis détruire mon rédacteur en chef.
J'ai également essayé d'utiliser la méthode SetDefaultEditor sur wx.grid.Grid et cela fonctionne, mais ne me permet naturellement pas d'avoir une stratégie d'édition spécifique à une colonne.
Voir Exemple complet du programme plantage: http://pastebin.com/SEbhvaKf
si vous importez wx.grid au lieu de simplement WX, alors vous ne serez pas l'erreur d'attribut. Autre que de changer le style d'importation, je ne vois pas ce que vous faites différemment qui est censé le réparer. L'utilisation de SetColAttr fonctionne très bien, et c'est une meilleure façon de le faire, merci. Mais je voudrais savoir pourquoi je recevais des fautes de segmentation ... –
Oui, exactement, le correctif est de changer le style d'importation. Comme vous pouvez le voir dans les sorties de la console, les objets de wx.grid ne fonctionnent pas si vous importez 'wx' au lieu de' wx.grid'. Je ne sais pas pourquoi, car importé, l'objet est listé comme 'wx.grid'. De toute façon, c'est toujours comme ça, pas seulement dans votre cas. Vous avez eu la faute de segmentation uniquement lors de l'utilisation de l'éditeur car il avait un type incorrect ou aucun type car il n'était pas correctement initialisé avec wx.grid. – laurent
La modification du style d'importation ne résout pas le problème. (Oui, je l'ai essayé pour être sûr) –