PyQt4学习笔记0】QtGui.QApplication

devtools/2025/2/4 19:24:31/

目录

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. 示例代码

python"># -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui, QtCoredef 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.ppmy.cn/devtools/156075.html

相关文章

深入理解 `box-sizing: border-box;`:CSS 布局的利器

深入理解 box-sizing: border-box;:CSS 布局的利器 默认行为示例代码 使用 box-sizing: border-box;示例代码 全局应用 box-sizing: border-box;示例代码 实际应用场景1. 表单布局2. 网格布局 总结 在 CSS 中,box-sizing 属性决定了元素的总宽度和高度是…

FFmpeg源码:av_base64_decode函数分析

一、引言 Base64(基底64)是一种基于64个可打印字符来表示二进制数据的表示方法。由于log2 646,所以每6个比特为一个单元,对应某个可打印字符。3个字节相当于24个比特,对应于4个Base64单元,即3个字节可由4个…

集合通讯概览

集合通信概览 (1)通信的算法 是根据通讯的链路组成的 (2)因为通信链路 跟硬件强相关,所以每个CCL的库都不一样 芯片与芯片、不同U之间是怎么通信的 多卡训练:多维并行(xxx并行在上一期已经讲述…

LabVIEW透镜多参数自动检测系统

在现代制造业中,提升产品质量检测的自动化水平是提高生产效率和准确性的关键。本文介绍了一个基于LabVIEW的透镜多参数自动检测系统,该系统能够在单一工位上完成透镜的多项质量参数检测,并实现透镜的自动搬运与分选,极大地提升了检…

AJAX综合案例——图书管理

黑马程序员视频地址: AJAX-Day02-10.案例_图书管理AJAX-Day02-10.案例_图书管理_总结_V1.0是黑马程序员前端AJAX入门到实战全套教程,包含学前端框架必会的(ajaxnode.jswebpackgit),一套全覆盖的第25集视频&#xff0c…

DeepSeek大模型系列

DeepSeek 基本使用 对于DeepSeek 的使用来说,可以通过Web和APP两种方式就可以了: Web网站使用地址: https://chat.deepseek.com/APP的下载地址: https://download.deepseek.com/app/ 以上两种方式注册账号就可以,使…

TI 在 Yocto 项目中的应用解析

引言 Yocto 项目(Yocto Project)是一个广泛用于嵌入式 Linux 开发的开源项目,旨在提供一个灵活、可复用的工具链,以便为不同的硬件平台定制 Linux 发行版。德州仪器(TI)作为嵌入式系统领域的重要参与者&am…

Java 大视界 -- Java 大数据在智慧农业中的应用与实践(70)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…