PyQt5 退出按钮

Tra*_*ish 0 python pyqt pyqt5

你能解释一下为什么退出按钮在这种情况下不能正常工作:

import sys
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication
from PyQt5.QtCore import QCoreApplication


class Example(QWidget):

    def __init__(self):
        super().__init__()       
        self.initUI()


    def initUI(self):               
        qbtn = QPushButton('Quit', self)
        qbtn.clicked.connect(QCoreApplication.instance().quit)
        qbtn.move(50, 50)       
        self.setGeometry(300, 300, 250, 150)   
        self.show()


app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

但如果我在函数中包含最后三行,则有效:

def fun():
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

fun()
Run Code Online (Sandbox Code Playgroud)

我不明白机制:(

zic*_*eau 5

我在使用 linux 时遇到了同样的问题。这段代码来自 zetcode.com 上的一个教程,用于在 quitButton.py 文件中的 PyQt5。这是我发现有效的解决方案:

而不是使用:

qbtn.clicked.connect(QCoreApplication.instance().quit)
Run Code Online (Sandbox Code Playgroud)

用这个替换它:

qbtn.clicked.connect(self.close)
Run Code Online (Sandbox Code Playgroud)

在此之后,您不需要在单独的函数中调用它。希望这可以帮助!