gpt4 book ai didi

python - PyQt4:QtCore.QCoreApplication.instance().quit 和 self.close 之间的区别?

转载 作者:太空宇宙 更新时间:2023-11-04 03:11:30 25 4
gpt4 key购买 nike

我一直在做大量的研究,但无法提出任何描述 PyQt4 中这一特定代码行的内容。像许多其他学习 PyQt 的人一样,我一直在关注 zetcode 的 PyQt4 tutorial .我仍然是 Python 的初学者,但我正在尽最大努力理解这里的每一行代码,但有一件事让我感到困惑:

import sys
from PyQt4 import QtGui, QtCore

class Example(QtGui.QWidget):

def __init__(self):
super(Example, self).__init__()

self.initUI()

def initUI(self):

qbtn = QtGui.QPushButton('Quit', self)
qbtn.clicked.connect(QtCore.QCoreApplication.instance().quit)
qbtn.resize(qbtn.sizeHint())
qbtn.move(50, 50)

self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Quit button')
self.show()

def main():

app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())


if __name__ == '__main__':
main()

除了这一行我什么都懂:

qbtn.clicked.connect(QtCore.QCoreApplication.instance().quit)

有人可以解释这里到底发生了什么,特别是 instance().quit 吗?我知道它显然退出了程序,我只是不明白代码实际上在做什么以及为什么。我能够挖掘到的唯一信息是 instance() “返回指向应用程序的 QCoreApplication(或 QApplication)实例的指针”,但这并不能真正帮助我理解(也许我只是没有经验够了,我不知道)。

另外,上面这行代码和下面这行代码在功能上有区别吗:

qbtn.clicked.connect(self.close)

我找到了 this thread哪种方式涉及整个主题,但提到 self.close 作为可能的替代方案的唯一回应被否决了,没有任何解释。非常感谢任何帮助或指导,谢谢!

最佳答案

qbtn.clicked 是按钮发出的信号。QCoreApplication.instance() 是主要的应用程序对象。所以它将按钮信号连接到应用程序的退出槽。

在您的第二个示例中,按钮只会关闭拥有该按钮的窗口。如果应用程序有多个窗口,或者在最后一个窗口关闭时没有自动退出,它仍会运行。

关于python - PyQt4:QtCore.QCoreApplication.instance().quit 和 self.close 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37869599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com