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

相关推荐
胖达不服输7 小时前
「日拱一码」081 机器学习——梯度增强特征选择GBFS
人工智能·python·算法·机器学习·梯度增强特征选择·gbfs
float_六七7 小时前
Java Stream流:从入门到精通
java·windows·python
星空的资源小屋7 小时前
PPTist,一个完全免费的 AI 生成 PPT 在线网站
人工智能·python·电脑·excel
滴滴滴嘟嘟嘟.8 小时前
Qt UDP通信学习
qt·学习·udp
10001hours8 小时前
C语言第12讲
c语言·开发语言
努力的小帅8 小时前
C++_哈希
开发语言·c++·学习·算法·哈希算法·散列表
程序员的世界你不懂8 小时前
【Flask】测试平台开发,工具模块开发 第二十二篇
android·python·flask
知彼解己8 小时前
深入理解 AbstractQueuedSynchronizer (AQS):Java 并发的排队管家
java·开发语言
薰衣草23338 小时前
滑动窗口(2)——不定长
python·算法·leetcode