Python 为什么我需要创建'QApplication'对象,以及它在PyQt GUI编程中的用途是什么?
这是一个非常简单的Python GUI程序,具有Python 为什么我需要创建'QApplication'对象,以及它在PyQt GUI编程中的用途是什么?,python,qt,pyqt5,Python,Qt,Pyqt5,这是一个非常简单的Python GUI程序,具有PyQt5框架。事实上,我不熟悉Qt,也是GUI编程的新手。在上面的程序中,创建了一个QApplication对象以及QWidget。在本例中,app对象不包含w对象,我看不到它们之间的任何连接。那么为什么需要创建QApplication的对象并使用该对象执行它呢? 谢谢大家! 您不需要创建QApplication,但它是一个方便的类,可以为您做很多事情 我不会解释它能为您做的一切--您可以在中找到--但我可以解释您在示例代码中正在做的两件事 de
PyQt5
框架。事实上,我不熟悉Qt,也是GUI编程的新手。在上面的程序中,创建了一个QApplication
对象以及QWidget。在本例中,app
对象不包含w
对象,我看不到它们之间的任何连接。那么为什么需要创建QApplication
的对象并使用该对象执行它呢?
谢谢大家! 您不需要创建QApplication,但它是一个方便的类,可以为您做很多事情
我不会解释它能为您做的一切--您可以在中找到--但我可以解释您在示例代码中正在做的两件事
def main():
app = QtWidgets.QApplication(sys.argv)
w = QtWidgets.QWidget()
w.show()
app.exec()
在这里,您将创建QApplication,并将参数传递给其构造函数。执行应用程序时可以使用的Qt
app = QtWidgets.QApplication(sys.argv)
就像你说的,在app
和w
之间似乎没有任何交互作用。但是有一种联系
为了让Qt的GUI正常工作,它需要在主线程中有一个事件循环。调用exec\uz()
将启动此事件循环
要引用以下文档:
进入主事件循环并等待调用exit(),然后
返回设置为exit()的值(如果exit()为
通过quit()调用
必须调用此函数才能开始事件处理。这个
主事件循环接收来自窗口系统的事件并进行调度
将这些应用程序添加到应用程序小部件
因此,只要您调用exec()
,控件就会离开main()
函数并开始响应UI事件,直到您告诉它退出为止
在某种程度上,几乎所有桌面GUI都是这样工作的,尽管并非所有GUI都有一个很好的应用程序对象来为您设置事件循环。如果您是事件驱动编程的新手,您可能希望了解这些概念。这是一个不错的起点。请阅读Qt的介绍。这里应该解释为什么您需要QApplication,或者如果您的应用程序不需要UI,您有哪些选项。实际上,无论是否使用事件队列,在尝试创建任何
QWidget
对象之前都需要有QApplication
对象QApplication
不仅仅是一个方便的类,它基本上设置了任何GUI系统运行所必需的大多数核心幕后GUI对象。这是对QtCoreApplication
设置和控制的所有核心Qt功能的补充。
app.exec_()