PyQt5 修改标签字体和颜色的程序

下面是一个使用PyQt5编写的程序,允许用户修改标签的字体和颜色:

python 复制代码
import sys
from PyQt5.QtWidgets import (QApplication, QMainWindow, QLabel, 
                             QPushButton, QVBoxLayout, QHBoxLayout, 
                             QWidget, QFontDialog, QColorDialog)
from PyQt5.QtGui import QFont, QColor
from PyQt5.QtCore import Qt

class FontColorApp(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()
        
    def initUI(self):
        # 设置窗口标题和大小
        self.setWindowTitle('修改标签字体和颜色')
        self.setGeometry(300, 300, 500, 300)
        
        # 创建中央部件和布局
        central_widget = QWidget()
        self.setCentralWidget(central_widget)
        main_layout = QVBoxLayout(central_widget)
        
        # 创建标签
        self.label = QLabel('这是一个示例文本,用于演示字体和颜色的修改。')
        self.label.setAlignment(Qt.AlignCenter)  # 文本居中
        self.label.setStyleSheet("border: 1px solid gray; padding: 10px;")  # 添加边框和内边距
        
        # 创建按钮
        font_btn = QPushButton('修改字体')
        color_btn = QPushButton('修改颜色')
        
        # 连接按钮信号到槽函数
        font_btn.clicked.connect(self.change_font)
        color_btn.clicked.connect(self.change_color)
        
        # 创建水平布局放置按钮
        btn_layout = QHBoxLayout()
        btn_layout.addWidget(font_btn)
        btn_layout.addWidget(color_btn)
        
        # 将标签和按钮布局添加到主布局
        main_layout.addWidget(self.label)
        main_layout.addLayout(btn_layout)
        
        # 设置初始字体和颜色
        self.current_font = QFont('Arial', 12)
        self.current_color = QColor(0, 0, 0)  # 黑色
        
        # 应用初始设置
        self.apply_settings()
        
    def change_font(self):
        """打开字体对话框并更新字体"""
        font, ok = QFontDialog.getFont(self.current_font, self)
        if ok:
            self.current_font = font
            self.apply_settings()
            
    def change_color(self):
        """打开颜色对话框并更新颜色"""
        color = QColorDialog.getColor(self.current_color, self)
        if color.isValid():
            self.current_color = color
            self.apply_settings()
            
    def apply_settings(self):
        """应用当前的字体和颜色设置到标签"""
        self.label.setFont(self.current_font)
        # 使用样式表设置颜色
        self.label.setStyleSheet(f"color: {self.current_color.name()}; border: 1px solid gray; padding: 10px;")

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

代码说明

1. 导入必要的模块

  • sys: 用于系统相关操作

  • PyQt5的各种组件:创建GUI界面所需的窗口、标签、按钮等

  • QFontQColor: 用于处理字体和颜色

2. 主窗口类 FontColorApp

继承自 QMainWindow,是应用程序的主窗口。

3. initUI 方法

  • 设置窗口标题和大小

  • 创建中央部件和布局

  • 创建显示文本的标签

  • 创建两个按钮用于修改字体和颜色

  • 设置初始字体和颜色

  • 应用初始设置

4. change_font 方法

  • 打开字体对话框让用户选择字体

  • 如果用户确认选择,则更新当前字体

5. change_color 方法

  • 打开颜色对话框让用户选择颜色

  • 如果用户选择了有效颜色,则更新当前颜色

6. apply_settings 方法

  • 将当前选择的字体和颜色应用到标签上

  • 使用样式表设置颜色,同时保留边框和内边距设置

7. 主程序入口

  • 创建QApplication实例

  • 创建主窗口实例并显示

  • 启动应用程序的事件循环

使用说明

  1. 运行程序后,会显示一个窗口,其中包含一个文本标签和两个按钮

  2. 点击"修改字体"按钮会打开字体对话框,可以选择字体、字号和样式

  3. 点击"修改颜色"按钮会打开颜色对话框,可以选择文本颜色

  4. 所有更改会立即应用到标签文本

相关推荐
万邦科技Lafite18 分钟前
阿里巴巴拍立淘按图搜索商品API返回值实践:提升用户购物满意度的关键措施
开发语言·api·开放api·电商开放平台·京东开放平台
小小龙学IT1 小时前
Qt 6 跨平台开发完全指南:从信号槽机制到实际项目落地
开发语言·qt
leisoo80971 小时前
ig50数据落盘ClickHousevsTimescaleDBvsDuckDB实测对比 IG50免费开源股票数据API接口
开发语言·jvm·数据库·python·json
卷无止境1 小时前
FastAPI 的 Metadata 到底是什么,又牵动了哪些核心概念
后端·python
卷无止境1 小时前
FastAPI 调试实战,从断点到生产环境的排错心法
后端·python
敢敢のwings2 小时前
智元 GO-2 与 AgiBot-World 深度解读
开发语言·后端·golang
yaoxin5211232 小时前
503. Java 反射 - 编写 ServiceFactory 类
java·开发语言·python
一个帅气昵称啊2 小时前
.Net C# AI智能体开发-快速开始
开发语言·c#·.net
kyrie_sakura3 小时前
python学习笔记3 -- 流程控制语句结构
笔记·python·学习
冬夜戏雪3 小时前
agent的trace 和eval
开发语言·前端·javascript