X11での解決できない問題点(wxGridCellEditor)

Windowsでは問題なく動作するのであるが、Linuxへ持っていったときに現れる問題点を書きとめておく。

wxGridで作成する表の問題だ。wx.grid.Gridで表を作り、各セルの値の編集を、wxGridCellEditorで行う。例えば、下記のようなコードでテストする。

import wx
import wx.grid as wxg

class GRID(wxg.Grid):
    def __init__(self, parent):
        wxg.Grid.__init__(self, parent, -1, pos=(0, 10), size=(500, 100))

        Ned1 = wxg.GridCellFloatEditor(1,2)   # 1列目には数値を入力できる
        Ned2 = wxg.GridCellChoiceEditor(choices = ['AA','BB','CC'])
                       # 2列目は定義してある値を選ぶ
        self.CreateGrid(1,2)         # 1行2列の表を作成
        self.SetCellEditor(0,0,Ned1)  # 1列目は数値入力
        self.SetCellEditor(0,1,Ned2)  # 2列目は値を選択

class MyApp(wx.App):
    def OnInit(self):
        frame = wx.Frame(None, -1, "test")
        frame.Show()
        self.GRID = GRID(frame)
        self.Txt1 = wx.StaticText(frame, -1, "Value", pos=(0, 100)) #固定テキストを表示
        self.Btn = wx.Button(frame, -1, "OK", pos=(0, 300))   # OKボタンを表示
        self.Btn.Bind(wx.EVT_BUTTON, self.OnBtn)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.GRID, 0, wx.LEFT, 10)
        sizer.Add(self.Txt1, 0, wx.LEFT, 10)
        sizer.Add(self.Btn,  0, wx.LEFT, 10)
        frame.SetSizer(sizer)

        return True

    def OnBtn(self, event):
        val = self.GRID.GetCellValue(0,1)  # 2列目から値を得る
        self.Txt1.SetLabel(val)       # 得た値を固定テキストとする

app = MyApp()
app.MainLoop()

表の2列目の値をプルダウンメニューから選択して、OKボタンを押すとその値が固定テキストに表示されるはず。
Windowsでは問題ないが、Linuxでは値を取ってこれない(セルに値を表示できるが、表示した値を認識できない)。いくらプルダウンメニューから選択しても値が入らないようだ。
LinuxではwxGridCellChoiceEditorが動作しないとなると他のもので置き換えなければならないので少し面倒なことになりそうだ。

(追記)11月26日
値を選択した後、セルの中で”プルダウンを示す矢印”が表示されたままの状態だと値が確定しないらしい。値を選んだ後に、他のセルをクリックすれば”プルダウンを示す矢印”が消える。この状態になって始めて選んだ値が確定するようだ。ちょっと使いにくいが、とりあえず解決。