wxGridCellEitorのバグ? "0"を入力できない。
グリッドで表を作り、セルの中に実数値を入力できるようにするために、wxGridを使った。
数値の入力には、wxGridCellFloatEditorを利用する。
例えば、以下のように書くことができる。
import wx import wx.grid as gridlib class InpValue(gridlib.Grid): def __init__(self, parent): gridlib.Grid.__init__(self, parent, -1, pos=(0,0), size=(300, 200)) FltEdX = gridlib.GridCellFloatEditor(1,3) self.CreateGrid(1,2) self.SetColLabelValue(0, "X") self.SetColLabelValue(1, "Y") self.SetRowLabelValue(0, "Enter values") self.SetCellEditor(0,0,FltEdX) self.SetCellEditor(0,1,FltEdX) class MyApp(wx.App): def OnInit(self): frame = wx.Frame(None, -1, "Test Grid Cell", size=(300,200)) frame.Show() self.Grid = InpValue(frame) return True app = MyApp() app.MainLoop()
このコードを実行すると、表が現れて、X、Yの値のセルに数値を入力することができる。
このとき、0以外の数値であれば問題なく入力できる。また、0以外の数値を入力した後で0を入力することも問題ない。しかし、最初から0を入力しようとすると受け付けてくれない。"0"としても"0.0"としても同じこと。何をやってもダメ。
起動直後にセルを編集状態にする(マウスを持っていきクリックする)と、0.000と表示されるのだが、これは"0.000"という値がデフォルトで入っていることを意味してはいないようだ。
単に小数点以下の(指定した)最大桁を示している。
というわけで、wxFridCellEditorで作成した表に数値を入力する場合、今のままでは0を入力できないことが分かった。「0を入力する場合は、0以外の値を入力した後に0を再入力してください」と説明しなければ。これでは使えないなー。