PyQt4学习笔记0】QtGui.QApplication
目录
1. 主要功能
2. 创建实例
3. 主要方法和属性
a. 设置应用程序属性
b. 样式表
c. 窗口管理
d. 事件循环
e. 其他
f. 设置全局鼠标光标样式
4. 退出应用程序
5. 示例代码
6. 注意事项
在 PyQt4 中,QtGui.QApplication
是一个非常重要的类,它代表了整个 GUI 应用程序。它是所有 PyQt4 应用程序的核心,主要用于管理应用程序的资源和事件循环。我们可以通过QApplication来做一些全局设置:如窗口的图标,设置全局鼠标光标样式。以下是关于 QtGui.QApplication
的详细介绍:
1. 主要功能
资源管理:管理应用程序的资源,例如样式表、字库、图标等。
事件循环:启动和管理应用程序的事件循环,处理用户交互、窗口更新等事件。
国际化支持:支持多语言和本地化。
样式表支持:应用样式表来统一应用程序的外观。
窗口管理:管理所有窗口和控件的创建、销毁和显示。
2. 创建实例
在 PyQt4 应用程序中,必须创建一个
QApplication
对象,并且只能创建一个实例。通常在应用程序的入口函数中初始化,例如:app = QtGui.QApplication(sys.argv)
sys.argv
:这是一个包含命令行参数的列表。PyQt4 会解析这些参数并设置应用程序的一些特性,例如调试模式或样式表。
3. 主要方法和属性
a. 设置应用程序属性
setApplicationName(name)
:设置应用程序的名称。
setApplicationVersion(version)
:设置应用程序的版本。
setOrganizationName(name)
:设置组织名称(用于配置文件等)。
setOrganizationDomain(domain)
:设置组织域名。b. 样式表
setStyleSheet(styleSheet)
:为整个应用程序设置样式表。c. 窗口管理
setWindowIcon(icon)
:设置应用程序的默认窗口图标。
activeWindow()
:返回当前活动窗口。d. 事件循环
exec_()
:启动事件循环,负责处理用户交互。这是一个阻塞调用,直到应用程序退出。
quit()
:手动退出事件循环。
exit(status)
:退出事件循环,并返回一个状态码。e. 其他
setOverrideCursor(cursor)
:设置全局鼠标光标样式。
restoreOverrideCursor()
:恢复默认鼠标光标样式。f. 设置全局鼠标光标样式
app = QtGui.QApplication(sys.argv) # 设置全局鼠标光标为等待光标 app.setOverrideCursor(QtGui.QCursor(QtGui.QPixmap("busy.png"))) # 恢复默认鼠标光标 app.restoreOverrideCursor() 参数说明: app.setOverrideCursor(cursor) cursor:可以是 QCursor 对象,通常通过 QtGui.QCursor(QtGui.QPixmap("path/to/cursor.png")) 创建。 如果要使用系统内置的光标样式,可以直接使用 QtGui.QCursor(QtCore.Qt.CursorShape)或QtGui.QCursor(QtCore.Qt.WaitCursor)
4. 退出应用程序
通常使用以下两种方法退出应用程序:
app.quit()
:立即退出应用程序。
sys.exit(app.exec_())
:常用的退出方式,确保正常退出并返回正确的状态码。
5. 示例代码
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui, QtCore
def main():
# 创建 QApplication 对象
app = QtGui.QApplication(sys.argv)
# 设置应用程序的名称和组织信息(可选):在某些操作系统上,配置文件(settings)会根据 setApplicationName 和 setOrganizationName 保存到特定的目录。
app.setApplicationName("My Application")
app.setOrganizationName("My Organization")
# 设置窗口图标
app.setWindowIcon(QtGui.QIcon("./logo.png"))
# 设置全局鼠标光标样式
app.setOverrideCursor(QtGui.QCursor(QtCore.Qt.WaitCursor))
# 创建一个简单的窗口
window = QtGui.QWidget()
window.setWindowTitle("PyQt4 Example")
window.resize(300, 200)
# window.setWindowIcon(QtGui.QIcon("./logo.png"))
window.show()
# 启动事件循环
sys.exit(app.exec_())
if __name__ == "__main__":
main()
6. 注意事项
单例模式:
QApplication
是一个单例类,每个应用程序只能创建一个实例。命令行参数:
sys.argv
是必需的,即使不使用命令行参数也要传入。事件循环:
app.exec_()
是阻塞的,必须作为主线程的最后一个调用。通过
QtGui.QApplication
,可以方便地管理 PyQt4 应用程序的资源和事件循环,是构建 GUI 应用程序的核心类。
------------------------END-------------------------
才疏学浅,谬误难免,欢迎各位批评指正。