你能解释一下为什么退出按钮在这种情况下不能正常工作:
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)
我不明白机制:(
我在使用 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)
在此之后,您不需要在单独的函数中调用它。希望这可以帮助!