当前位置: 首页 > article >正文

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-------------------------

才疏学浅,谬误难免,欢迎各位批评指正。


http://www.kler.cn/a/530688.html

相关文章:

  • Python + Tkinter + pyttsx3实现的桌面版英语学习工具
  • Python教学:文档处理及箱线图等
  • 松灵机器人 scout ros2 驱动 安装
  • 图像噪声处理技术:让图像更清晰的艺术
  • OpenAI o3-mini全面解析:最新免费推理模型重磅发布
  • 【自学笔记】Web前端的重点知识点-持续更新
  • Node 处理客户端不同的请求方法
  • DeepSeek 原理解析:与主流大模型的差异及低算力优势
  • 【基于SprintBoot+Mybatis+Mysql】电脑商城项目之用户登录
  • 【数据结构与算法】力扣 5. 最长回文子串
  • [ VS Code 插件开发 ] 使用 Task ( 任务 ) 代替 createTerminal (终端) 来执行命令
  • 数据库和数据表的创建、修改、与删除
  • 冷启动+强化学习:DeepSeek-R1 的原理详解——无需监督数据的推理能力进化之路
  • 基于vue船运物流管理系统设计与实现(源码+数据库+文档)
  • 蓝桥杯学习笔记01
  • 【Qt】常用的容器
  • llama.cpp GGUF 模型格式
  • GWO优化SVM回归预测matlab
  • Mac怎么彻底卸载软件,简单彻底的卸载方式
  • 【数据结构-Trie树】力扣677. 键值映射
  • SQL/Panda映射关系
  • Spring Boot 2 快速教程:WebFlux处理流程(五)
  • 自制虚拟机(C/C++)(三、做成标准GUI Windows软件,扩展指令集,直接支持img软盘)
  • 轮转数组-三次逆置
  • Chromium132 编译指南 - Android 篇(六):从 Linux 版切换到 Android 版
  • 鸢尾花书《编程不难》02---学习书本里面的三个案例