【问题标题】:How to properly integrate PyQt4 and Twisted?如何正确集成 PyQt4 和 Twisted?
【发布时间】:2018-01-07 08:26:40
【问题描述】:

目前,运行我的使用 twisted 的 pyqt 应用程序的代码如下:

import sys
from PyQt4 import QtGui

class MainWindow(QtGui.QMainWindow):
    def __init__(self, reactor, parent=None):
        super(MainWindow, self).__init__(parent)
        self.reactor = reactor
        self.resize(250,150)
        self.move(300,300)
        self.setWindowTitle('Simple')

    def closeEvent(self, e):
        self.reactor.stop()

if __name__=="__main__":
    import qt4reactor
    app = QtGui.QApplication(sys.argv)
    qt4reactor.install()
    from twisted.internet import reactor
    window = MainWindow(reactor)
    window.show()
    reactor.runReturn()
    sys.exit(app.exec_())

这个 sn-p 代码是我在 qt4reactor 文档中在线找到的。我的应用程序运行良好,但无法正常关闭。当我退出应用程序时,某些东西会继续运行。按 ctrl+c 强制关闭事件会导致 python.exe 已停止工作错误。

目标是让应用程序正确关闭。任何建议将不胜感激。总的来说,我是一个 pyqt 和扭曲的业余爱好者。任何帮助理解我正在使用这段 sn-p 代码做什么也将非常有用,因为我很想了解我做错了什么:)

谢谢!

【问题讨论】:

  • 你能在你的问题中添加一个最小的 test.ui 吗?没有它,这个例子是不完整的。
  • 嗨,让,感谢您的帮助!我用一个非常小的 ui 更新了代码,它仍然不能正确关闭。值得注意的是,当我强制代码停止时,它现在“干净地”停止了。它不再抛出错误,例如 python.exe 已停止工作。但是,它仍然不会自行关闭。
  • 谢谢。现在的例子是一个很好的例子。不幸的是,我还无法重现您观察到的行为。当我单击窗口上的关闭控件时,它会关闭并且进程干净地退出!我测试了 Python 2.7.14、Twisted 16.6.0、qt4reactor 1.6、PyQt4 4.11.4+dfsg-2build2、libqtgui4 4:4.8.7+dfsg-7ubuntu1 (Ubuntu 17.10)

标签: python pyqt pyqt4 twisted


【解决方案1】:

将处理程序附加到停止反应器的 Qt 退出信号(通过 reactor.stop())。

【讨论】:

  • 我之前尝试过,但没有成功。我已经用更多细节编辑了主要问题。
猜你喜欢
  • 2016-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-24
  • 2020-12-18
相关资源
最近更新 更多