Python 在单独的线程中运行PyQt时终止交互式控制台出口上的GUI

Python 在单独的线程中运行PyQt时终止交互式控制台出口上的GUI,python,multithreading,pyqt,Python,Multithreading,Pyqt,我想编写一个PyQt应用程序,在一个单独的线程中生成它的窗口,这样我就可以在它运行时在一个交互式shell中处理它的数据结构。不幸的是,尝试在shell中执行exit()并不会终止应用程序,可能是因为Qt线程仍在运行。在控制台中按下CTR+D、typed exit()或typed exit()后,如何强制Python外壳死亡?以下是测试用例: #!/usr/bin/python -i from PyQt4 import QtGui class MainWindow(QtGui.QMainWi

我想编写一个PyQt应用程序,在一个单独的线程中生成它的窗口,这样我就可以在它运行时在一个交互式shell中处理它的数据结构。不幸的是,尝试在shell中执行exit()并不会终止应用程序,可能是因为Qt线程仍在运行。在控制台中按下CTR+D、typed exit()或typed exit()后,如何强制Python外壳死亡?以下是测试用例:

#!/usr/bin/python -i

from PyQt4 import QtGui

class MainWindow(QtGui.QMainWindow):
    pass

def main():
    import sys

    app = QtGui.QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())


if __name__ == '__main__':
    import threading
    threading.Thread(None, main).start()

线程模块不提供任何kill方法。这可能有助于让主线程处理退出,这样它就不用等待其余线程,而是调用app.close()。