PyQt5-如何设置应用和窗口的图标?控件的提示信息如何设置?

1 如何设置应用和窗口的图标?

1.1 导入需要的包

  • QApplication类是PyQt5的应用程序类;
  • QMainWindow类是一个主窗口类;
  • QIcon类用于创建和管理图标;
  • ctypespython的一个函数库,提供和C语言兼容的数据类型,可以直接调用动态链接库中的导出函数。这个后续再说。
python 复制代码
import sys
import ctypes
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtGui import QIcon

1.2 设置方法

  • 使用setWindowIcon方法设置图标;
python 复制代码
window.setWindowIcon(QIcon('icon.png'))

1.3 完整代码

python 复制代码
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/11/7 
# 文件名称:test024_IconSet.py
# 作用:设置窗口和应用图标
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

import sys
import ctypes
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtGui import QIcon

class IconSet(QMainWindow):
    def __init__(self):
        super(IconSet, self).__init__()
        self.init_ui()

    def init_ui(self):
        # 设置窗口标题
        self.setWindowTitle("设置窗口图标")

        # 设置窗口尺寸和位置
        self.setGeometry(500, 300, 600, 600)

        # 设置窗口图标
        self.setWindowIcon(QIcon('F:\pyqt_study\images\myicon\hongbao.svg'))

if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = IconSet()
    win.show()
    sys.exit(app.exec_())

1.4 实现效果

  • 发现窗口的图标确实更改了;
  • 但是任务栏中的图标仍然没有更改;
  • 此时需要加入以下代码,告诉窗口这是我自己注册的应用程序,所以我将决定它的图标:
python 复制代码
myappid = "wo de app"
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)

1.5 优化后的代码

  • 在开头加入如下代码即可:
python 复制代码
import sys
import ctypes
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtGui import QIcon


myappid = "wo de app"
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)

1.6 效果查看

  • 如下:

1.7 解决图标不显示问题

  • 如果设置后图标不显示,那么可能需要设置图标的路径为绝对路径;
python 复制代码
self.setWindowIcon(QIcon('F:\pyqt_study\images\myicon\hongbao.svg'))
  • 我这里使用相对路径确实是不显示图标了:
python 复制代码
self.setWindowIcon(QIcon('./images/myicon/hongbao.svg'))

1.8 在主程序中调用

  • 另外一种设置方法是直接在主程序中设置:
python 复制代码
if __name__ == "__main__":
    app = QApplication(sys.argv)
    app.setWindowIcon(QIcon('F:\pyqt_study\images\myicon\dingwei.svg'))
    win = IconSet()
    win.show()
    sys.exit(app.exec_())
  • 完整代码如下:
python 复制代码
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/11/7 
# 文件名称:test024_IconSet.py
# 作用:设置窗口和应用图标
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

import sys
import ctypes
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtGui import QIcon


myappid = "wo de app"
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)


class IconSet(QMainWindow):
    def __init__(self):
        super(IconSet, self).__init__()
        self.init_ui()

    def init_ui(self):
        # 设置窗口标题
        self.setWindowTitle("设置窗口图标")

        # 设置窗口尺寸和位置
        self.setGeometry(500, 300, 600, 600)    

if __name__ == "__main__":
    app = QApplication(sys.argv)
    app.setWindowIcon(QIcon('F:\pyqt_study\images\myicon\dingwei.svg'))
    win = IconSet()
    win.show()
    sys.exit(app.exec_())

2 控件的提示信息如何设置?

  • 简单说就是鼠标放在控件上,会有一个不能点击的提示信息;

2.1 导入需要的包

python 复制代码
import sys
import ctypes
from PyQt5.QtWidgets import QApplication, QMainWindow, QToolTip, QPushButton, QHBoxLayout, QWidget
from PyQt5.QtGui import QFont
from PyQt5.QtGui import QIcon

2.2 适用方法

python 复制代码
self.setToolTip("这是一个提示信息")

2.3 实现过程

  • 创建一个窗口;
  • 鼠标放在窗口上有提示信息;
  • 在窗口上放置一个按钮;
  • 鼠标放在按钮上有提示信息。

2.4 设置字体

python 复制代码
QToolTip.setFont(QFont("Black", 14))

2.5 添加按钮

python 复制代码
self.b = QPushButton("按钮")
self.b.setToolTip("这是一个按钮")
lay = QHBoxLayout()
lay.addWidget(self.b)
my_f = QWidget()
my_f.setLayout(lay)
self.setCentralWidget(my_f)

2.6 完整代码

python 复制代码
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/11/7 
# 文件名称:test025_ToolTip.py
# 作用:控件的提示信息
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

import sys
import ctypes
from PyQt5.QtWidgets import QApplication, QMainWindow, QToolTip, QPushButton, QHBoxLayout, QWidget
from PyQt5.QtGui import QFont
from PyQt5.QtGui import QIcon


myappid = "wo de app"
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)


class ToolTip(QMainWindow):
    def __init__(self):
        super(ToolTip, self).__init__()
        self.init_ui()

    def init_ui(self):
        QToolTip.setFont(QFont("Black", 14))
        self.setToolTip("这是一个提示信息")
        # 设置窗口标题
        self.setWindowTitle("设置字体及提示")

        # 设置窗口尺寸和位置
        self.setGeometry(500, 300, 600, 600)

        # 设置窗口图标
        self.setWindowIcon(QIcon('F:\pyqt_study\images\myicon\hongbao.svg'))

        # 添加按钮
        self.b = QPushButton("按钮")
        self.b.setToolTip("这是一个按钮")
        lay = QHBoxLayout()
        lay.addWidget(self.b)
        my_f = QWidget()
        my_f.setLayout(lay)
        self.setCentralWidget(my_f)

if __name__ == "__main__":
    app = QApplication(sys.argv)
   #app.setWindowIcon(QIcon('F:\pyqt_study\images\myicon\dingwei.svg'))
    win = ToolTip()
    win.show()
    sys.exit(app.exec_())

2.7 对应效果

  • 按钮提示:
  • 窗口提示:
相关推荐
2601_962293791 小时前
OCRmyPDF批处理脚本:使用Python自动化复杂OCR任务
python·自动化·批处理脚本·ocrmypdf·ocr任务
Java后端的Ai之路2 小时前
20、Python - 备忘录模式
开发语言·人工智能·python·外观模式·备忘录模式
2601_962077713 小时前
基于Python与NLP的新闻事件信息抽取实战:从NER到时空标准化
python·nlp·transformers·spacy·新闻事件抽取
JavaPub-rodert3 小时前
LangChain 从入门到 Agent 实战:用 Python 搭建一个真正能调用工具和知识库的 AI 助手
人工智能·python·langchain
郝学胜-神的一滴4 小时前
Qt 高级编程 045:坐标体系深度实战
开发语言·c++·windows·python·qt·程序人生
m0_380743875 小时前
给 OpenAI API 调用加上模型切换:GPT-5.1 和 Codex 的配置实践
人工智能·python·gpt
2601_962297485 小时前
在python3中、下列输出变量a的正确写法是_2020超星大数据Python免费答案
数据结构·python·算法·编程·字符串操作
“AI国潮设计-小江”5 小时前
Python实战 | SDXL精准控制“普宁英歌舞×星空蛋糕”IP落地,附核心Prompt与商用授权思路
开发语言·人工智能·python·prompt·aigc
公爵爱学习5 小时前
无人机视觉识别前序-Linux-YOLO安装
python·yolo·计算机视觉·conda·无人机
2601_962295335 小时前
使用python实现一个浏览器自动化的脚本
python·脚本·rpa·浏览器自动化·操作