reactor.registerWxApp(App) 给出属性错误 'SelectReactor' 对象没有属性 'registerWxApp'

reactor.registerWxApp(App) giving Attribute error 'SelectReactor' object has no attribute 'registerWxApp'

我目前收到错误:

reactor.registerWxApp(app)
AttributeError: 'SelectReactor' object has no attribute 'registerWxApp'

由于无法识别 registerWxApp,我似乎无法将应用程序添加到反应器中?此外,如果我没有捕捉到 wxreactor,则会引发 wxreactor 已安装的错误。

if __name__ == '__main__':
    import wx
    from twisted.internet import wxreactor
    try:
        wxreactor.install()
    except:
        print('already installed')
    # import t.i.reactor only after installing wxreactor:
    from twisted.internet import reactor


STREAM_URL = url

print(STREAM_URL)

factory = WebSocketClientFactory(STREAM_URL)
factory.protocol = MyClientProtocol

print('hello')

print('hi')


app = wx.App(False)
app._factory = factory
app._frame= testapi(None)
app._frame.Show()
reactor.registerWxApp(app)
print(reactor)
reactor.run()

app.MainLoop()

你在这里做了一个假设:

from twisted.internet import wxreactor
try:
    wxreactor.install()
except:
    print('already installed')

假设 原因 wxreactor.install() 可能引发异常是 wxreactor 已经安装。我预计这个假设是无效的。

尽量避免在你的 Python 程序中写 except: 除非你打算在代码块中包含一个裸 raise 来重新引发你正在处理的任何异常(甚至所以,请考虑使用 finally 代替)。

当您捕捉到所有 异常时,您可能会捕捉到您的代码无法实际上 正确处理的异常。在这种情况下,可能是安装 wxreactor 时出现了一些其他问题。如果是这样,那么当代码在这次尝试后继续导入 twisted.internet.reactor 时,您可能会得到默认的反应堆。

您报告的异常:

AttributeError: 'SelectReactor' object has no attribute 'registerWxApp'

表示你没有安装wxreactor。您已安装 SelectReactor。您不能使用 select reactor 注册 wx 应用程序。

您需要诊断 wxreactor.install() 失败的原因,您不能通过压缩和忽略该调用的所有异常来做到这一点。