如何实现文字底纹输入框字体颜色的设置?

264 阅读4分钟

主题:今天我们实现一个基于QWidget通用窗口的标签、文本框及字体和按钮自定义样式的案例,主要是熟悉基于QWidget下的一些常用的功能。

效果如下:

image.png

1 新建窗体

打开QTDesigner,点击新建,创建一个Widget的通用窗体。

image.png

接下来我们进行修改窗体名字,

image.png

修改后是这样,保存后你可以看到窗体最左上角的名字已经改为了“QWdiget学习案例”。

image.png

2 向页面添加组件:

2.1 添加 QLabel 标签到面板,并输入内容为“QLabel标签测试文本”

image.png

2.2 添加 Text Edit文本框组件到面板

双击文本框组件可以打开文本编辑面板,如下图:

image.png

3 属性设置

3.1 文本标签背景设置

接下来我们进行标签常用属性的设置,设置文字背景。点击标签框,查看右侧属性编辑器,可以看到一个palette的颜色调色板,点击进去:

image.png

点击打开颜色调色板就是下图这样,我们可以一个个的属性进行调节,也可以直接进行快速调节。

image.png 咱们懒省事了,直接选择“快速”,选择红色即可完成对标签底色的设置,如下图:

image.png

3.2 文本框中字体颜色设置

对于文本框内字体颜色进行设置,仍然使用palette调色板,如下图:

image.png

此时我们直接选择左侧的Text 的颜色,点击颜色激活框,选择颜色为蓝色,确定就可以查看输入框内字体颜色被设置成蓝色了。

image.png

说到这里,我们看到,用到的palette调色板挺多,接下来我们简单的看一下调色板相关知识点:

image.png

  • 左侧为颜色角色和激活的典型颜色,右边为典型控件激活、非激活和失效调色效果预览,可以将调色结果保存到文件中,或者将已有的调色文件载入,
  • Qt中调色板palette用于管理控件的一组外观显示设置,对应PyQt6中的QPalette类,可以管理控件和窗体的所有颜色。
  • 颜色角色:ColorRole:是指界面中对应的部分界面外观组合,通过枚举QPalette.ColorRole.x来定义。x就是颜色值对应的枚举名。
  • 颜色组:ColorGroup是指同一外观组合在活动状态(active获得焦点)、非活动状态(inactive,未获取焦点)、禁止状态(disable,不能获得焦点)时的对应颜色。

3.3 字体大小粗细设置

我们新拖拽一个Label标签,并在右侧属性哪里找到font,点击后面的三个点,便可以对字体进行大小粗细的设置,很简单,不演示了。

image.png

3.4 外观样式表

在Qt中用styleSheet来对组件进行样式设置,类似于HTML的CSS,这是专门为Qt中控件开发的,支持跨平台。

可以通过QApplication.setStyleSheet()在整个应用程序中设置样式。如果在不同级别设置了多个样式表,Qt将从所有设置的样式表中派生出有效的样式表,称为样式级联。

image.png

利用PyUic将Ui文件转换成py文件就可以使用了。

image.png

4 拓展:窗口类型

4.1 设置窗口类型

设置窗口类型使用setWindowsFlages(窗口类型枚举),其中这些枚举类型如下:

窗口描述
WidgetQWidget类的默认类型,也是通用窗口类型
WindowQWidget类创建的主窗口。
Dialog对话框
SplashScreen启动窗口,表现为启动窗口没有边框和标题,无法条哼大小,是QSplashScreen类的默认值
Desktop桌面,窗口表现为桌面,不一会在屏幕上显示
SubWindow子窗口,有边框、标题栏,不能单独存在,也无法用鼠标调整大小
Foreign Window外部窗口,是另一个进程创建的

4.2 设置窗口属性

在设置窗口时可用“|”以此设置多个属性,通过windowFlags函数可获取当前窗口的属性常用的属性如下:

属性描述
FramelessWindowHint去除边框和标题栏,不能调整移动窗口
MSWidowsFixedSizeDialogHint禁止调整窗口尺寸
NoDropShadowWindowHint去除窗口的阴影
CustomizeWindowHint去除边框和标题栏,但增加bulk效果,尺寸可调整
WindowTitleHint增加系统菜单和关闭按钮
WindowSystemMenuHint增加系统菜单和关闭按钮
WindowMinimizeButtonHint增加最小化按钮
WindowMaximizeButtonHint增加最大化按钮
WindowMinMaxButtonsHint增加最大化最小化按钮
WindowCloseButtonHint增加关闭按钮
WindowContextHelpButtonHint增加帮助按钮
WindowStaysOnTopHint将窗口置顶
WindowStaysOnBottomHint将窗口置底

通过一个案例简单的演示以下启动窗口的效果:

# -*- coding:utf-8 -*-
    """
    ------------------------------------------------
    File Name: AppSimple.py
    Description:
    Author: lzq
    date:2024-07-23 11:10
    ------------------------------------------------
    """
    import sys

    from PyQt6.QtCore import Qt
    from PyQt6.QtWidgets import QApplication, QLabel

    app = QApplication(sys.argv)
    lb = QLabel("<font color=blue size=64><b>程序正在启动,请稍后...</b></font>")
    lb.setWindowFlags(Qt.WindowType.SplashScreen |Qt.WindowType.FramelessWindowHint)
    lb.show()
    app.exec()

image.png

^V^ ### 你越关注和点赞,路老师越有动力!###^V^