0

我试图通过创建自定义单元格编辑器并将其设置为我的网格的默认单元格编辑器来截取输入到 wx.grid 对象的单元格编辑器中的文本。

作为测试,我做了以下事情:

class CellEditor(wx.grid.GridCellTextEditor):
    def __init__(self):
        wx.MessageBox("Init")
        super(CellEditor, self).__init__()

    def BeginEdit(self, *args, **kwargs):
        wx.MessageBox("Begin Edit")
        super(CellEditor, self).BeginEdit(*args, **kwargs)

当“初始化”消息框出现时,“开始编辑”消息框永远不会出现。即使我BeginEdit()从调试器中显式调用该方法,也不会显示消息框。这让我觉得 BeginEdit 方法在初始化期间被原始方法重写了。来人帮我看看发生了什么?

4

1 回答 1

0

我并不完全理解自定义单元格编辑器背后的魔力,但这个例子可能是一个很好的起点。似乎您必须覆盖更多方法才能使其正常工作。

另外,我会小心覆盖方法,您的方法签名与被覆盖的方法BeginEdit(self, *args, **kwargs)不匹配,即BeginEdit(self, row, col, grid). 我做了一些快速测试,看看你是否可以覆盖这样的方法,看起来确实如此,但它令人困惑并可能导致错误。

于 2013-11-25T11:28:48.363 回答