【发布时间】: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)