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. 所有更改会立即应用到标签文本

相关推荐
blasit4 小时前
笔记:Qt C++建立子线程做一个socket TCP常连接通信
c++·qt·tcp/ip
IVEN_5 小时前
只会Python皮毛?深入理解这几点,轻松进阶全栈开发
python·全栈
Ray Liang6 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
AI攻城狮6 小时前
如何给 AI Agent 做"断舍离":OpenClaw Session 自动清理实践
python
千寻girling6 小时前
一份不可多得的 《 Python 》语言教程
人工智能·后端·python
AI攻城狮9 小时前
用 Playwright 实现博客一键发布到稀土掘金
python·自动化运维
曲幽10 小时前
FastAPI分布式系统实战:拆解分布式系统中常见问题及解决方案
redis·python·fastapi·web·httpx·lock·asyncio
孟健1 天前
Karpathy 用 200 行纯 Python 从零实现 GPT:代码逐行解析
python
码路飞1 天前
写了个 AI 聊天页面,被 5 种流式格式折腾了一整天 😭
javascript·python