PySide6控件:QFont设置、QColor调色板、QPixmap图像处理与QCursor光标自定义

QFont字体类

QFont 是一个用于表示 字体 的类。它可以设置字体的类型、大小、粗细、斜体、下划线等属性。from PySide6.QtGui import QFont。

复制代码
from PySide6.QtGui import QFont
from PySide6.QtWidgets import QApplication,QWidget,QLabel


class MyWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(300,300)
        self.label1 = QLabel('标签1',self)
        # font = QFont()
        font1 = QFont('宋体', 16)
        # 加粗
        font1.setBold(True)
        # 斜体
        font1.setItalic(True)
        # 下划线
        font1.setUnderline(True)
        self.label1.setFont(font1)

        self.label2 = QLabel('标签2',self)
        font2 = QFont()
        # 设置字体
        font2.setFamily('隶书')
        # 删除线
        font2.setStrikeOut(True)
        # 设置字体大小
        font2.setPointSize(18)
        self.label2.setFont(font2)

        self.label3 = QLabel('标签3',self)


        self.label1.setGeometry(0,0,100,20)
        self.label2.setGeometry(0,40,100,20)
        self.label3.setGeometry(0,80,100,40)



if __name__ == '__main__':
    app = QApplication([])

    afont = QFont('方正舒体',16)
    # 给应用程序设置默认字体
    app.setFont(afont)
    win = MyWindow()
    win.show()
    app.exec()

QColor颜色类

QColor 是 PySide6(以及 PyQt)中用于表示颜色的类。它可以用来表示 RGB、HSV、CMYK 等不同颜色模型中的颜色。from PySide6.QtGui import QColor,Qt

RGB(红 red,绿 gree,蓝 blue)值0-255

复制代码
from PySide6.QtGui import QColor,Qt

# 使用整数 RGB 值 (0-255)
color = QColor(255,0,0)
# 使用十六进制颜色代码
color = QColor('#FF0000')
# 字符串
color = QColor('red')
# 使用颜色的全局变量
color = QColor(Qt.GlobalColor.red)

from PySide6.QtGui import QColor,Qt

#红色
color = QColor(255,0,0)

red = color.red()
green = color.green()
blue = color.blue()
print('r',red,'g',green,'b',blue)
# 获取十六进制颜色代码
print(color.name())

# 设置为绿色
color.setRgb(0, 255, 0)
print('r',color.red(),'g',color.green(),'b',color.blue())

# 检查颜色是否有效。没有设置任何颜色值或非法颜色值返回False
print(f"Is color valid? {color.isValid()}")

QPalette调色板类

QPalette是用于管理 GUI 应用程序颜色主题的类。它定义了窗口部件(如按钮、标签、文本框等)的前景色、背景色和其他颜色属性。通过 QPalette,你可以自定义应用程序的外观和风格。

from PySide6.QtGui import QPalette

控件.palette() 获取调色板

控件.setPalette(QPalette)设置控件的调色板

两个重要的参数

ColorGroup 用于定义不同状态下控件的颜色:

激活状态(Active 获得焦点)

非激活状态(Inactive 失去焦点)

失效状态(Disabled 禁用)

Color Roles 定义了不同控件的颜色,例如:

背景色(QPalette.ColorRole.Window)

前景色(QPalette.ColorRole.WindowText)

按钮背景色(QPalette.ColorRole.Button)

按钮文本色(QPalette.ColorRole.ButtonText)

高亮色(QPalette.ColorRole.Highlight)

高亮文本色(QPalette.ColorRole.HighlightedText)

复制代码
from PySide6.QtGui import QPalette,QFont,QColor
from PySide6.QtWidgets import QApplication,QWidget,QLabel


if __name__ == '__main__':
    app = QApplication([])
    # 获取调色板
    palette = app.palette()
    # 设置窗口处于激活状态的背景颜色
    palette.setColor(palette.ColorGroup.Active,palette.ColorRole.Window,QColor('yellow'))
    # 设置窗口处于非激活状态的背景颜色
    palette.setColor(palette.ColorGroup.Inactive,palette.ColorRole.Window,QColor('white'))
    app.setPalette(palette)
    win = QWidget()
    win.resize(300,300)

    label = QLabel('Hello',win)
    font = QFont('宋体',20)
    label.setFont(font)
    label.setGeometry(10,10,100,20)

    lpalette = label.palette()
    # 激活状态 背景颜色变成粉色
    lpalette.setColor(lpalette.ColorGroup.Active,lpalette.ColorRole.Window,QColor('pink'))
    # 禁用状态背景颜色变成蓝色
    lpalette.setColor(lpalette.ColorGroup.Disabled,lpalette.ColorRole.Window,QColor('blue'))
    # 非激活状态字体变成红色
    lpalette.setColor(lpalette.ColorGroup.Inactive,lpalette.ColorRole.WindowText,QColor('red'))
    # 开启背景填充
    label.setAutoFillBackground(True)
    label.setPalette(lpalette)
    # label.setEnabled(True)

    win.show()
    app.exec()

QPixmap

QPixmap用于在屏幕上显示图像的类。常见用途:在 QLabel 或 QPushButton 中显示图像。功能具有图像缩放、旋转和裁剪。

可以读取和写入以下常见的图像格式,BMP、GIF、JPG/JPEG、PNG、PPM、XBM、XPM

复制代码
from PySide6.QtGui import QPixmap

qp1 = QPixmap()

# 长 100 宽 100
qp2 = QPixmap(100,100)
# 读入指定的图片
qp3 = QPixmap('imgs/a.png')

from PySide6.QtWidgets import QApplication,QWidget,QLabel
from PySide6.QtGui import QPixmap,Qt



if __name__ == "__main__":
    app = QApplication([])
    win = QWidget()
    win.resize(300,300)
    q = QPixmap()
    # 读入图像
    q.load('imgs\\a.png')
    # 保存图像
    q.save('out.png')
    # 转换成QImage图像
    qimage = q.toImage()
    print(type(qimage))
    # 获取宽度和高度
    print('宽',q.width(),'高',q.height())

    q1 = q.scaled(100,100,Qt.AspectRatioMode.KeepAspectRatio,
                  Qt.TransformationMode.SmoothTransformation)
    # Qt.TransformationMode
    # SmoothTransformation 平滑收缩算法,质量好,速度慢
    # FastTransformation 快速收缩算法,质量低,速度快

    # Qt.AspectRatioMode.
    # IgnoreAspectRatio 忽视宽、高
    # KeepAspectRatio 保持宽高比,可能会被比设置的尺寸小
    # KeepAspectRatioByExpanding 保持宽高比,超出区域会被填充

    label = QLabel('标签',win)
    label.setPixmap(q1)
    label.resize(100,100)
    
    win.show()
    app.exec()

from PySide6.QtWidgets import QApplication,QWidget,QLabel
from PySide6.QtGui import QPixmap,QColor


if __name__ == "__main__":
    app = QApplication([])
    win = QWidget()
    win.resize(300,300)
    q = QPixmap(100,100)
    q.fill(QColor('red'))

    label = QLabel('标签',win)
    label.setPixmap(q)
    label.resize(100,100)

    win.show()
    app.exec()

QIcon和QCursor

QIcon用于表示图标,可以支持多种格式的图标文件,如PNG、ICO、BMP等。

复制代码
from PySide6.QtGui import QIcon,QPixmap
from PySide6.QtWidgets import QApplication,QWidget,QPushButton

if __name__ == '__main__':
    app = QApplication([])
    win = QWidget()
    win.resize(300,300)
    icon = QIcon(QPixmap('imgs\\a.png'))
    # 添加图标
    # 按钮添加图标
    icon1 = QIcon()
    icon.addPixmap(QPixmap('imgs\\.png'))

    btn = QPushButton(win)
    btn.resize(100,60)

    btn.setIcon(icon)
    # 给窗口设置图标
    win.setWindowIcon(icon)
    win.show()
    app.exec()

QCursor设置光标的形状

|-------------------------|------------------------|----------------------|
| Qt.CursorShape. |||
| CrossCursor 十字光标 | ArrowCursor 默认光标 | WaitCursor 等待光标(沙漏) |
| PointingHandCursor 手型光标 | IBeamCursor 文本输入光标 I 形 | WhatsThisCursor 帮助光标 |

vb 复制代码
`from PySide6.QtGui import QCursor,Qt
from PySide6.QtWidgets import QApplication,QWidget,QPushButton

if __name__ == '__main__':
    app = QApplication([])

    win = QWidget()
    win.resize(300,300)

    # cursor = QCursor()
    # 设置光标
    # cursor.setShape(Qt.CursorShape.PointingHandCursor)
    win.setCursor(QCursor(Qt.CursorShape.WhatsThisCursor))
    win.show()
    app.exec()`
相关推荐
数据智能老司机2 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机3 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机3 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机3 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i3 小时前
drf初步梳理
python·django
每日AI新事件3 小时前
python的异步函数
python
这里有鱼汤5 小时前
miniQMT下载历史行情数据太慢怎么办?一招提速10倍!
前端·python
databook14 小时前
Manim实现脉冲闪烁特效
后端·python·动效
程序设计实验室14 小时前
2025年了,在 Django 之外,Python Web 框架还能怎么选?
python
倔强青铜三16 小时前
苦练Python第46天:文件写入与上下文管理器
人工智能·python·面试