Python: Wie Schließen (oder beenden) Python-Prozess Nach QMainWindow Dialog wird geschlossen

Gibt es zwei .py Dateien im selben Ordner:

dialog_01.py and dialog_02.py

Beide Dateien sind Kopie der jeweils anderen. Beide bauen eine einfache QMainWindow dialog-Fenster mit zwei Schaltflächen: "Ok" und "Abbrechen".

Klick auf " Ok " - Schaltfläche schließt das aktuell geöffnete dialog-Fenster und öffnet ein anderes. Also, wenn Dialog_01 Schaltfläche Ok geklickt wird die dialog_01 geschlossen ist und dialog_02 wird geöffnet. Wenn Dialog_02 Schaltfläche Ok geklickt wird, dann dialog_02 geschlossen ist und dialog_01 geöffnet wird und so weiter.

BEARBEITET FRAGE:

Schließen Sie das Dialogfeld Blätter Python-Prozess läuft noch im hintergrund (es kann sein gesehen in OS x Activity Monitor oder Windows Task-Manager).

Wie stellen Sie sicher, dass die Python-Prozess ist beendet, nachdem das dialog-Fenster geschlossen ist?

dialog_01.py

import sys, os
from PyQt4 import QtCore, QtGui    
if 'app' not in globals().keys(): app = QtGui.QApplication(sys.argv)

class Dialog_01(QtGui.QMainWindow):
    def __init__(self):
        super(QtGui.QMainWindow,self).__init__()

        myQWidget = QtGui.QWidget()
        myBoxLayout = QtGui.QVBoxLayout()       

        Cancel_button = QtGui.QPushButton("Cancel")
        Cancel_button.clicked.connect(self.Cancel)      
        myBoxLayout.addWidget(Cancel_button) 


        Button_01 = QtGui.QPushButton("Press to close this dialog and open Dialog 02")
        Button_01.clicked.connect(self.callAnotherQMainWindow)
        myBoxLayout.addWidget(Button_01)        

        myQWidget.setLayout(myBoxLayout)
        self.setCentralWidget(myQWidget)
        self.setWindowTitle('Dialog 01')

    def callAnotherQMainWindow(self):
        from dialog_02 import Dialog_02
        self.close()
        self.dialog_02 = Dialog_02()
        self.dialog_02.show()
        self.dialog_02.raise_()

    def Cancel(self):
        self.close()

    def closeEvent(self):
        self.deleteLater()



if __name__ == '__main__':
    dialog_1 = Dialog_01()
    dialog_1.show()
    dialog_1.resize(480,320)
    sys.exit(app.exec_())

dialog_02.py

import sys, os
from PyQt4 import QtCore, QtGui    
if 'app' not in globals().keys(): app = QtGui.QApplication(sys.argv)

class Dialog_02(QtGui.QMainWindow):
    def __init__(self):
        super(QtGui.QMainWindow,self).__init__()

        myQWidget = QtGui.QWidget()
        myBoxLayout = QtGui.QVBoxLayout()

        Cancel_button = QtGui.QPushButton("Cancel")
        Cancel_button.clicked.connect(self.Cancel)      
        myBoxLayout.addWidget(Cancel_button) 


        Button_02 = QtGui.QPushButton("Press to close this dialog 02 and re-open Dialog 01")
        Button_02.clicked.connect(self.callAnotherQMainWindow)
        myBoxLayout.addWidget(Button_02)

        myQWidget.setLayout(myBoxLayout)
        self.setCentralWidget(myQWidget)
        self.setWindowTitle('Dialog 02')

    def callAnotherQMainWindow(self):
        from dialog_01 import Dialog_01
        self.close()
        self.dialog_01 = Dialog_01()
        self.dialog_01.show()
        self.dialog_01.raise_()

    def Cancel(self):
        self.close()

    def closeEvent(self):
        self.deleteLater()


if __name__ == '__main__':
    dialog_2 = Dialog_02()
    dialog_2.show()
    dialog_2.resize(480,320)
    sys.exit(app.exec_())

InformationsquelleAutor alphanumeric | 2014-03-17

Schreibe einen Kommentar