Terminate PyQt Application [duplicate]

♀尐吖头ヾ 提交于 2019-12-24 20:24:51

问题


If the user interacts with the application, for example pressing a button, and the user clicks then on the X button, the application keeps running, but the window closes. How can I fully terminate the application. It’s built using PyQt5.


回答1:


Here is a simple "Hello World" example, I copied from the Qt tutorials. It uses sys.exit(...) to exit the application.

import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QLabel, QGridLayout, QWidget
from PyQt5.QtCore import QSize    

class HelloWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)

        self.setMinimumSize(QSize(640, 480))    
        self.setWindowTitle("Hello world") 

        centralWidget = QWidget(self)          
        self.setCentralWidget(centralWidget)   

        gridLayout = QGridLayout(self)     
        centralWidget.setLayout(gridLayout)  

        title = QLabel("Hello World from PyQt", self) 
        title.setAlignment(QtCore.Qt.AlignCenter) 
        gridLayout.addWidget(title, 0, 0)

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    mainWin = HelloWindow()
    mainWin.show()
    sys.exit( app.exec_() )



回答2:


Try it:

import sys
from PyQt5.QtWidgets import (QMainWindow, QLabel, QGridLayout, qApp,
                             QApplication, QWidget, QPushButton)
from PyQt5.QtCore import QSize, Qt   

class HelloWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Hello world") 

        centralWidget = QWidget()          
        self.setCentralWidget(centralWidget)   

        title = QLabel("Hello World from PyQt") 
        title.setAlignment(Qt.AlignCenter) 

        button = QPushButton("Quit")
        button.clicked.connect(qApp.quit)            # <---

        gridLayout = QGridLayout(centralWidget)          
        gridLayout.addWidget(title,  0, 0)
        gridLayout.addWidget(button, 1, 0)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    mainWin = HelloWindow()
    mainWin.show()
    sys.exit( app.exec_() )



来源:https://stackoverflow.com/questions/53944219/terminate-pyqt-application

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!