OSError:异常:iewin.IEHtmlWindow

时间:2017-12-06 09:29:29

标签: python-3.x wxpython wxpython-phoenix

我正在将我的应用程序从py2转换为py3。该过程包括从wxPython Classic迁移到Phoenix。

这是一个使用wxPython IEHtmlWindow class的GUI应用程序。

当我执行应用程序时,我收到此错误:

OSError: exception: access violation reading 0xFFFFFFFF903EED60
Traceback (most recent call last):
  File "P:\Python36\lib\site-packages\wx\lib\activex.py", line 154, in MSWTranslateMessage
    res = self.ipao.TranslateAccelerator(msg)

鼠标在HTML窗口内的每次移动都会产生此错误。

尝试调试问题,我将Phoenix演示包中ActiveX_IEHtmlWindow.py示例的TestPanel代码复制到名为html.py的python模块中(并将TestPanel面板重命名为{{ 1}})。然后,我用最小的框架实例化演示IEHtml窗口:

HtmlWin

我按预期获得了Phoenix演示IEHtml窗口,但它也产生了相同的OSError。

我没有在Python 2.7上运行wxPython classic(vs 2.8)时出现此错误 这是windows 10,64bits和最近的凤凰释放(b2)

更新

正如Exception messsage所说,模块 activex.py 中类import wx from html import HtmlWin class HtmlFrame(wx.Frame): def __init__(self, title): wx.Frame.__init__(self, None, -1, title=title) sizer = wx.BoxSizer(wx.VERTICAL) self.html = HtmlWin(self, None) sizer.Add(self.html, 1, flag=wx.EXPAND ) self.SetSizer(sizer) self.Fit() self.SetSize((768,550)) self.html.ie.AddEventSink(self) class MyFrame(HtmlFrame): def __init__(self, title): HtmlFrame.__init__(self, title=title) if __name__ == '__main__': app = wx.App() MyFrame(title='test').Show() app.MainLoop() 的{​​{1}}函数发生异常。

MSWTranslateMessage

作为最后的解决方案,我在ActiveXctrl行周围的def MSWTranslateMessage(self, msg): # Pass native messages to the IOleInPlaceActiveObject # interface before wx processes them, so navigation keys and # accelerators can be dealt with the way that the AXControl # wants them to be done. MSWTranslateMessage is called before # wxWidgets handles and eats the navigation keys itself. res = self.ipao.TranslateAccelerator(msg) if res == hr.S_OK: return True else: return super(ActiveXCtrl, self).MSWTranslateMessage(msg) 上捕获了例外情况。在此更改之后,IEHtmlWindow的功能似乎没有受到影响。

试图找出问题的线索,我抓住了产生异常的try/except的值:

res = self.ipao.TranslateAccelerator(msg)

不知道这意味着什么。也许有人可以从这里给我一些提示,以一种干净的方式解决问题(不用try / except修改lib)

0 个答案:

没有答案