【问题标题】:PyQT crashes after sleepPyQT 在睡眠后崩溃
【发布时间】:2017-03-20 07:22:32
【问题描述】:

我使用 python3.5.2 和 PyQt4。

我正在使用 PyQt 连接和使用 .ocx。

from PyQt4.QAxContainer import QAxWidget
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        while True:
            # run some codes that use QAxWidget.dynamicCall() function
            # print some results
            sleep(30)

睡眠并返回主代码后,我得到“进程完成,退出代码 -1073740771 (0xC000041D)”

我尝试使用 try...except... 子句,但无法捕获错误。

我应该推测什么问题?

如何调试?

编辑:

崩溃报告:

程序名称:python.exe,版本:3.5.1150.1013,时间戳:0x576eff6a

模块名称:QAxContainer.pyd,版本:0.0.0.0,时间戳:0x56123368

异常代码:0xc000041d

错误偏移:0x00013301

进程 ID:0x4d24

EDIT2:

如果我将 sleep(30) 设置为 sleep(10),它可以正常工作而不会崩溃。

【问题讨论】:

  • 我想问题是,如果你使用time.sleep(30),你的程序会在半分钟内保持无响应,这样Windows就会怀疑它已经崩溃并终止进程。为什么需要这种睡眠?一个好的经验法则如下:永远不要在 pyqt 应用程序中使用 time.sleep()

标签: python pyqt pyqt4 python-3.5


【解决方案1】:

我可以成为处理您的应用程序的垃圾收集器。
因此,请尝试将应用置于全局范围内。

这样试试:

from PyQt4.QAxContainer import QAxWidget
app = None

if __name__ == "__main__":
    app = QApplication(sys.argv)
    while True:
        # run some codes that use QAxWidget.dynamicCall() function
        # print some results
        sleep(30)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 2011-12-13
    相关资源
    最近更新 更多