pyqt5中的控件

news2024/11/27 15:26:06

字体部分

学习如何加载本地字体a.tff


import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton
from PyQt5.QtGui import QFont, QFontDatabase


class MyWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.button = None
        self.label = None
        self.initUI()

    def initUI(self):
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('PyQt5 Example')

        self.label = QLabel(self)
        self.label.setGeometry(100, 50, 200, 30)
        self.label.setText("显示")
        font_id = QFontDatabase.addApplicationFont(r'字体\a.ttf')  # 替换自己的字体,路径需更换
        font_families = QFontDatabase.applicationFontFamilies(font_id)
        font_family = font_families[0] if font_families else '黑体'
        self.label.setFont(QFont(font_family, 12))  # 设置字体为a.ttf

        self.button = QPushButton('Change Text', self)
        self.button.setGeometry(100, 100, 100, 30)
        self.button.clicked.connect(self.changeText)

    def changeText(self):
        self.label.setText("什么字体")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())

点击运行:
在这里插入图片描述
点击按钮改变标签文字
在这里插入图片描述

覆盖Qt Designer设计好的字体

set_font_recursive是为了遍历搜索部件;
注意:不能在qss里添加字体,否则那个部件更改无效。
无效的情况还有很多种,需要仔细看qss了

def set_font_recursive(widget, font):
    # 设置当前部件的字体
    widget.setFont(font)

    # 如果当前部件是容器部件(如窗口、布局等),则递归设置其子部件的字体
    if isinstance(widget, QWidget):
        for child_widget in widget.findChildren(QWidget):
            set_font_recursive(child_widget, font)


class Stats(QMainWindow, Ui_Form):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        font_id = QFontDatabase.addApplicationFont(r'字体\c.ttf')  # 替换自己的字体,路径需更换
        font_families = QFontDatabase.applicationFontFamilies(font_id)
        font_family = font_families[0] if font_families else '黑体'
        font = QFont(font_family, 12)
        font.setBold(True)  # 添加加粗效果
        set_font_recursive(self, font)  # 递归更改字体
        
        self.label.setFont(QFont(font_family, 24))  # 特殊定制,大小可变
        self.label_readme1.setFont(QFont(font_family, 14))
        self.label_readme2.setFont(QFont(font_family, 14))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/780191.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java开发】 Mybatis-Plus 06:通用枚举功能

枚举类是开发时绕不开的话题, Mybatis-Plus 也提供了简便的枚举功能,快学起来吧~ 目录 1 版本区别 2 通用枚举功能实现 2.1 创建枚举类 2.2 实体类新增枚举字段 3 枚举字段测试 3.1 新增 ① 后台指定枚举 ② 前后端交互 3.2 查询 3.3 修改 ①…

递归排序算法快速排序的实现过程

快速排序(Insertion Sort)也是一种递归排序算法。 快速排序原理:先以列表中的任意一个数为基准(一般选头或尾),将列表分为左、右两个子列表。 左子列表的数要比基准数小,右子列表的数要比基准数大。然后继续把左子列表和右子列表按同样的方…

蓝桥杯专题-真题版含答案-【九宫幻方】【打鱼还是晒网】【阶乘尾数零的个数】【等差素数列】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…

【Java】重写compareTo()方法给对象数组排序

我们先给一个数组排序,我们肯定用的是Arrays.sort()方法: public class test2 {public static void main(String[] args) {int[] arr{3,5,4,6,9,8,1};System.out.println(Arrays.toString(arr));System.out.println("---------");Arrays.sort…

【一文详解 requests 库中 json 参数和 data 参数的用法】

在requests库当中,requests请求方法,当发送post/put/delete等带有请求体 的请求时,有json和data2个参数可选。 众所周知,http请求的请求体格式主要有以下4种:application/jsonapplicaiton/x-www-from-urlencoded multi…

音视频开发-ffmpeg介绍-系列二

目录 一、FFmpeg核心结构体 二、解码流程 三、FFmpeg解码实现 四、FFmpeg编码实现 五、FFmpeg转码实现 一、FFmpeg核心结构体 AVFormatContext:解封装功能的结构体,包含文件名、音视频流、时长、比特率等信息; AVCodecContext&#xf…

nginx代理后刷新显示404,这样解决。

项目部署之后,通过首页进入访问页面正常,F5刷新之后出现错误如下图。 怎么解决: 在Nginx配置里面增加 location / {root /www/wwwroot/phm/phmweb;index index.html index.htm;try_files $uri $uri/ /index.html;}

Kotlin基础(七):数据类和封闭类

前言 本文主要讲解kotlin数据类(DataClass)和封闭类(SealedClasses),包括使用数据类,对象复制,数据类成员的解构,使用封闭类,以及数据类和封闭类在Android开发中的应用。…

【数据挖掘】时间序列的傅里叶变换:用numpy解释的快速卷积

一、说明 本篇告诉大家一个高级数学模型,即傅里叶模型的使用; 当今,傅里叶变换及其所有变体构成了我们现代世界的基础,为压缩、通信、图像处理等技术提供了动力。我们从根源上理解,从根本上应用,这是值得付…

微信小程序——页面跳转方法和场景用法总结

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

失物招领小程序连接人与物的奇妙纽带

hello guys!! 随着生活的节奏加快,人们在各个领域都有可能会遇到丢失物品或者拾到物品的情况。不论是学生、员工还是旅游爱好者,我们都有可能在生活的轨迹中遇到这样的情况。为了提供一个便捷的平台,让人们能够分享、发布和寻找丢失物品&…

再添新品|OPT(奥普特)高速高分辨率线阵相机发布!

针对大幅面且高速生产的视觉检测场景,OPT(奥普特)持续在数据传输接口技术上进行开发创新,推出三大系列线阵相机,产品阵容再升级。 本次发布的新品共12款,分别有万兆网、CXP及CL系列的新品,分辨…

JavaDemo——使用jks的https

java使用https主要就是设置下sslContext,sslContext初始化需要密钥管理器和信任管理器,密钥管理器用于管理本地证书和私钥,信任管理器用于验证远程服务器的证书,这两种管理器都需要KeyStore初始化,两种管理器可以按需只…

OS1_进程与线程的管理

序言 1.OS以进程、线程的方式在CPU中执行静态保存在外存(内存)中的程序,进程的构成与状态转化,特别是进程的切换; 2.当有多个进程处于就绪态,有哪些常见的挑选以执行方式; 3.并发执行(乱序发射)的进程,共享…

商品信息管理-亿发商品进销存管理系统,批发行业零售门店免费试用

众所周知,批发零售行业面临着商品品类繁多、品牌众多、商品信息量庞大等挑战。同时,商品售价波动频繁,还需要管理商品批次,避免积压过期。针对这些传统批发零售行业的管理难题,加快行业数字化转型成为解决之道&#xf…

远程访问不了虚拟机【bug】

远程访问不了虚拟机【bug】 bug 虚拟机访问不了他的默认网关 虚拟机IP:172.25.254.250 虚拟机网关IP:172.25.254.1 远程登录也是超时的 错误产生 我还原了一下虚拟机的网络配置选项 导致 √ 使用本地DHCPT服务将IP地址给虚拟机 相关资源 本机的I…

基于Labelstudio的UIE半监督智能标注方案(本地版)

自然语言处理信息抽取智能标注方案包括以下几种: 基于规则的标注方案:通过编写一系列规则来识别文本中的实体、关系等信息,并将其标注。 基于规则的标注方案是一种传统的方法,它需要人工编写规则来识别文本中的实体、关系等信息&a…

Redis入门(1)——Redis是啥 安装Docker的Redis Redis的基本数据类型+常用命令 SpringBoot整合Redis初步

目录 引出MySQL数据库:慢Redis是啥?问题:redis是单线程的,为什么会非常快? 安装Redis的docker1.搜索docker search redis2.拉取docker pull redis3.运行容器4.进入容器-->进入redis redis的基本数据类型字符串(stri…

在线招投标系统nodejs+vue

本站是一个B/S模式系统,采用vue框架,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得在线招投标系统管理工作系统化、规范化。本系统的使用使管理人员从繁重的工作中解脱出…

PHP反序列化漏洞之面向对象基础

一、PHP面向对象基础 要谈PHP反序列化,不得不涉及面向对象,因为在反序列化漏洞利用中,大多涉及的都是“对象”的反序列化。所以需要了解面向对象基础。 面向面向对象是一种以“对象”为中心的编程思想,把要解决的问题分解成各个…