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界面所需的窗口、标签、按钮等

  • QFont 和 QColor: 用于处理字体和颜色

2. 主窗口类 FontColorApp

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

3. initUI 方法

  • 设置窗口标题和大小

  • 创建中央部件和布局

  • 创建显示文本的标签

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

  • 设置初始字体和颜色

  • 应用初始设置

4. change_font 方法

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

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

5. change_color 方法

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

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

6. apply_settings 方法

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

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

7. 主程序入口

  • 创建QApplication实例

  • 创建主窗口实例并显示

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

使用说明

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

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

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

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

相关推荐
starzy19907 小时前
深入理解Scala隐式类:扩展方法机制
开发语言·人工智能·scala
M--Y7 小时前
LangGraph 工作流模式
开发语言·javascript·python·langchain·大模型·llm·langgraph
岁月宁静8 小时前
DeepSeek Harness 实战与架构解析:让 Agent 从“会聊”到“能交付”
人工智能·python·agent
LiaoWL1238 小时前
NumPy 入门实战(二):向量化与余弦相似度——从 ndarray 到 Embedding
python·numpy·embedding
forest_098 小时前
多 Agent 协作第二课:交叉验证≠独立验证
人工智能·python·算法·机器学习·prompt·agi
吴可可1239 小时前
WScript Shell操作注册表详解
开发语言
纪念 2299 小时前
C++ 算法基础 (差分)
开发语言·c++·算法
databook12 小时前
时间序列数据,先拆规律还是先查异常
python·数据挖掘·数据分析
师夷长技以自愈12 小时前
手搓 AI Agent 第 8 篇:从手写循环到画流程图——LangGraph 封装
人工智能·python
aifannihao13 小时前
Rust 1.100 的 DropGuard:用 Python 实测失败回滚与吞异常
python·rust·异常处理·标准库·contextlib