Repository: spyder-ide/spyder

Issue:
TypeError when opening a pandas DataFrame in variable explorer
## Description

### What steps will reproduce the problem?

<!--- You can use Markdown here --->

create a pandas dataframe, then double click on value in Variable Explorer

### Traceback
```python-traceback
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
TypeError: invalid result from DataFrameHeaderModel.headerData(), unable to convert a Python 'Alignment' object to a C++ 'Qt::Alignment' instance
```

## Versions

* Spyder version: 5.2.2 
* Python version: 3.10.2
* Qt version: 5.12.9
* PyQt5 version: 5.12.3
* Operating System: Windows 10

### Dependencies

```
# Mandatory:
atomicwrites >=1.2.0          :  1.4.0 (OK)
chardet >=2.0.0               :  4.0.0 (OK)
cloudpickle >=0.5.0           :  2.0.0 (OK)
cookiecutter >=1.6.0          :  1.7.3 (OK)
diff_match_patch >=20181111   :  20200713 (OK)
intervaltree >=3.0.2          :  3.0.2 (OK)
IPython >=7.6.0;<8.0.0        :  7.31.1 (OK)
jedi >=0.17.2;<0.19.0         :  0.18.1 (OK)
jellyfish >=0.7               :  0.9.0 (OK)
jsonschema >=3.2.0            :  4.4.0 (OK)
keyring >=17.0.0              :  23.4.0 (OK)
nbconvert >=4.0               :  6.4.2 (OK)
numpydoc >=0.6.0              :  1.2 (OK)
paramiko >=2.4.0              :  2.9.2 (OK)
parso >=0.7.0;<0.9.0          :  0.8.3 (OK)
pexpect >=4.4.0               :  4.8.0 (OK)
pickleshare >=0.4             :  0.7.5 (OK)
psutil >=5.3                  :  5.9.0 (OK)
pygments >=2.0                :  2.11.2 (OK)
pylint >=2.5.0                :  2.12.2 (OK)
pyls_spyder >=0.4.0           :  0.4.0 (OK)
pylsp >=1.3.2;<1.4.0          :  1.3.3 (OK)
pylsp_black >=1.0.0           :  1.1.0 (OK)
qdarkstyle =3.0.2             :  3.0.2 (OK)
qstylizer >=0.1.10            :  0.2.1 (OK)
qtawesome >=1.0.2             :  1.1.1 (OK)
qtconsole >=5.2.1;<5.3.0      :  5.2.2 (OK)
qtpy >=1.5.0                  :  2.0.1 (OK)
rtree >=0.9.7                 :  0.9.7 (OK)
setuptools >=49.6.0           :  59.8.0 (OK)
sphinx >=0.6.6                :  4.4.0 (OK)
spyder_kernels >=2.2.1;<2.3.0 :  2.2.1 (OK)
textdistance >=4.2.0          :  4.2.2 (OK)
three_merge >=0.1.1           :  0.1.1 (OK)
watchdog >=0.10.3             :  2.1.6 (OK)
zmq >=17                      :  22.3.0 (OK)

# Optional:
cython >=0.21                 :  0.29.27 (OK)
matplotlib >=2.0.0            :  3.5.1 (OK)
numpy >=1.7                   :  1.21.5 (OK)
pandas >=1.1.1                :  1.4.1 (OK)
scipy >=0.17.0                :  1.8.0 (OK)
sympy >=0.7.3                 :  1.9 (OK)
```



Discussion:
FYI i can replicate the same issue in Arch Linux with the same 2.0.1 version of qtpy if it helps
Hey @fcento100, thanks for reporting. Please post a simple code that generates a dataframe whose view in the Variable Explorer produces this problem. Thanks!
Run this sample code:

```python
import pandas as pd

df = pd.DataFrame({'A':[1,2,3],'B':[4,5,6]})
```

Then in the variable explorer double click on the value field of 'df' and you should see the error pop up. It does it on both my windows and linux machine. (PS it does this with any DataFrame, regardless of what's in it, hence even a simple one like the one above seems to triggers it)

Resolving patch:
diff --git a/spyder/plugins/variableexplorer/widgets/dataframeeditor.py b/spyder/plugins/variableexplorer/widgets/dataframeeditor.py
--- a/spyder/plugins/variableexplorer/widgets/dataframeeditor.py
+++ b/spyder/plugins/variableexplorer/widgets/dataframeeditor.py
@@ -757,7 +757,7 @@ def headerData(self, section, orientation, role):
             if orientation == Qt.Horizontal:
                 return Qt.AlignCenter
             else:
-                return Qt.AlignRight | Qt.AlignVCenter
+                return int(Qt.AlignRight | Qt.AlignVCenter)
         if role != Qt.DisplayRole and role != Qt.ToolTipRole:
             return None
         if self.axis == 1 and self._shape[1] <= 1:
@@ -849,7 +849,7 @@ def headerData(self, section, orientation, role):
             if orientation == Qt.Horizontal:
                 return Qt.AlignCenter
             else:
-                return Qt.AlignRight | Qt.AlignVCenter
+                return int(Qt.AlignRight | Qt.AlignVCenter)
         if role != Qt.DisplayRole and role != Qt.ToolTipRole:
             return None
         if self.model.header_shape[0] <= 1 and orientation == Qt.Horizontal:


Test patch: