微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

wxpython:具有打开CellEditor的grid.Destroy即使使用DisableCellEditControl也会使Python崩溃

如何解决wxpython:具有打开CellEditor的grid.Destroy即使使用DisableCellEditControl也会使Python崩溃

我有一些wxpython代码,可以创建一个网格,用户可以在其中选择wx.ComboBox中的行数。如果用户选择0行,则ComboBox回调将删除网格。除在网格中打开CellEditor的Mac上之外,这都可以正常工作。在这种情况下,wxpython会导致分段错误,从而使Python崩溃。

我知道应该强制关闭打开的CellEditor,并且此代码应该执行以下操作:

    def OnRows(event):
        'Respond to a change in the number of rows'
        data['nPeaks'] = int(rows.GetValue())
        if peaksGrid and peaksGrid.IsCellEditControlEnabled():
            # complete any grid edits in progress
            print('closing CellEditControl')
            peaksGrid.HideCellEditControl()
            peaksGrid.disableCellEditControl()
            wx.CallLater(100,peaksGrid.Destroy)

我知道IsCellEditControlEnabled()返回True是因为执行了打印,但是即使这样,Destroy()也会使Python崩溃。

我还没有做详尽的测试,所以我不确定其他OS或不同版本的wx会发生什么。在这种情况下,我使用的是4.0.0b2,但我认为在销毁网格之前还需要做其他事情。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。