我正在调查traitsui中的DataFrameEditor
。我遇到了这种奇怪的行为,并希望有人能够确认和/或提供解决方案。
如果我在下面运行这个最小的例子:
import numpy as np
import pandas as pd
from traits.api import HasStrictTraits, Instance, Button
from traitsui.api import View, Item, VGroup
from traitsui.ui_editors.data_frame_editor import DataFrameEditor
class Foo(HasStrictTraits):
do_it = Button(label='Do it')
data = Instance('pandas.core.frame.DataFrame')
view = View(
VGroup(
Item('data', show_label=False,
editor=DataFrameEditor(editable=True)),
Item('do_it', show_label=False)
)
)
def _data_default(self):
return pd.DataFrame()
def _do_it_fired(self):
self.data = pd.DataFrame({'a': np.arange(5),
'b': np.arange(5)})
if __name__=='__main__':
f = Foo()
f.configure_traits()
然后,当我第一次点击Do it
按钮时,我只看到数据帧的索引:
这显然不对。如果我关闭窗口并重新运行e.configure_traits()
,那么我会按预期看到完整的数据帧:
是个bug吗?我做错了什么?