2017-10-21 45 views
0

J'ai une table wxPython personnalisée pour stocker de grandes données de grille. J'ai basé mon implémentation sur le wiki et sur la démo de wxPython. Pour le faire fonctionner, j'écrase plusieurs des méthodes GridTableBase. Je stocke mes données de la grille dans une trame de données de pandas géants, si GetColLabel ressemble à ceci:Définition des noms de colonne dans la table personnalisée wxPython

class HugeTable(gridlib.GridTableBase): 
.... 

def GetColLabelValue(self, col): 
    """                        
    Get col label from dataframe                  
    """                    
    if len(self.dataframe): 
     return self.dataframe.columns[col] 
    return '' 

J'écrasé SetColLabelValue avec le code suivant:

def SetColLabelValue(self, col, value): 
    """                        
    Set col label value in dataframe                 
    """ 
    if len(self.dataframe): 
     col_name = str(self.dataframe.columns[col]) 
     self.dataframe.rename(columns={col_name: str(value)}, inplace=True) 
     return '' 
    return '' 

Ce code fonctionne pour changer le nom de la colonne, mais il génère cette erreur:

TypeError: invalid result from HugeTable.SetColLabelValue() 

Je ne sais pas pourquoi cette erreur se produit.

J'ai deux questions. 1. Comment puis-je savoir quel type de valeur de retour est attendu? 2. Comment empêcher cette erreur?

Note Version: J'utilise wxPython Phoenix 4.0.0a1 sur OS X.

+1

La documentation est ici: https://wxpython.org/Phoenix/docs/html/index.html Dans votre cas, les docs ne disent rien sur une valeur de retour, donc probablement il doit être 'None' –

+0

J'ai essayé cela, et None crée cette erreur: 'TypeError: résultat invalide de HugeTable.GetValue(), NoneType ne peut pas être converti en un wxString C/C++ dans ce contexte' –

+0

Ah, j'avais tort. Cela fonctionne! Merci –

Répondre