代码之家  ›  专栏  ›  技术社区  ›  yannh

终止PyQt应用程序[重复]

  •  0
  • yannh  · 技术社区  · 6 年前

    如果用户与应用程序交互,例如按一个按钮,然后用户单击X按钮,应用程序将继续运行,但窗口将关闭。如何才能完全终止应用程序。它使用PyQt5构建。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Duck Dodgers    6 年前

    下面是一个简单的“Hello World”示例,我是从Qt教程中复制过来的。它使用 sys.exit(...) 退出应用程序。

    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
  •  0
  •   S. Nick    6 年前

    试试看:

    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_() )
    

    enter image description here