python之pyqt5通过按钮改变Label的背景颜色

本文介绍如何使用PyQt5设计界面,包括按钮和Label的布局,并展示了通过按钮点击事件改变Label背景颜色的方法。代码中详细解释了如何创建窗口、设置按钮位置及功能,以及如何为Label设置背景色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先是界面的布置,代码如下所示,使用的是Designer。

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt5 UI code generator 5.6
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.btn_1 = QtWidgets.QPushButton(self.centralwidget)
        self.btn_1.setGeometry(QtCore.QRect(220, 191, 75, 23))
        self.btn_1.setObjectName("btn_1")
        self.btn_2 = QtWidgets.QPushButton(self.centralwidget)
        self.btn_2.setGeometry(QtCore.QRect(220, 220, 75, 23))
        self.btn_2.setObjectName("btn_2")
        self.btn_3 = QtWidgets.QPushButton(self.centralwidget)
        self.btn_3.setGeometry(QtCore.QRect(220, 249, 75, 23))
        self.btn_3.setObjectName("btn_3")
        self.btn_4 = QtWidgets.QPushButton(self.centralwidget)
        self.btn_4.setGeometry(QtCore.QRect(220, 278, 75, 23))
        self.btn_4.setObjectName("btn_4")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(310, 190, 71, 101))
        font = QtGui.QFont()
        font.setFamily("Arial")
        font.setPointSize(36)
        self.label.setFont(font)
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")
        self.btn_exit = QtWidgets.QPushButton(self.centralwidget)
        self.btn_exit.setGeometry(QtCore.QRect(220, 330, 75, 23))
        self.btn_exit.setObjectName("btn_exit")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.btn_1.setText(_translate("MainWindow", "1"))
        self.btn_2.setText(_translate("MainWindow", "2"))
        self.btn_3.setText(_translate("MainWindow", "3"))
        self.btn_4.setText(_translate("MainWindow", "4"))
        self.label.setText(_translate("MainWindow", "0"))
        self.btn_exit.setText(_translate("MainWindow", "退出"))

接下来是运行代码,如下所示:

# -*- coding: utf-8 -*-
'''
通过按钮改变Label的背景颜色
'''
import os
import sys
import time
from tqdm import tqdm
from PyQt5.QtWidgets import QApplication, QWidget, QMessageBox, QMainWindow
from PyQt5.QtGui import QPalette
from PyQt5.QtCore import Qt
from application.NewUi.untitled import Ui_MainWindow


class my_window(Ui_MainWindow, QMainWindow):
    def __init__(self):
        super(my_window, self).__init__()
        self.setupUi(self)
        self.label.setAutoFillBackground(True)
        global palette_red, palette_green, palette_blue, palette_yellow
        palette_red = QPalette()
        palette_green = QPalette()
        palette_blue = QPalette()
        palette_yellow = QPalette()
        palette_red.setColor(QPalette.Window, Qt.red)
        palette_green.setColor(QPalette.Window, Qt.green)
        palette_blue.setColor(QPalette.Window, Qt.blue)
        palette_yellow.setColor(QPalette.Window, Qt.yellow)
        self.btn_1.clicked.connect(self.btn_1_clicked)
        self.btn_2.clicked.connect(self.btn_2_clicked)
        self.btn_3.clicked.connect(self.btn_3_clicked)
        self.btn_4.clicked.connect(self.btn_4_clicked)
        self.btn_exit.clicked.connect(self.exit_systerm)
        self.setWindowTitle('通过按钮改变Label的背景颜色')

    def btn_1_clicked(self):
        self.label.setPalette(palette_red)

    def btn_2_clicked(self):
        self.label.setPalette(palette_blue)

    def btn_3_clicked(self):
        self.label.setPalette(palette_green)

    def btn_4_clicked(self):
        self.label.setPalette(palette_yellow)

    def exit_systerm(self):
        self.close()

    def closeEvent(self, event):
        reply = QMessageBox.question(self, 'Exit', 'Are you sure to quit?', QMessageBox.Yes | QMessageBox.Cancel)
        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()


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

特别注意:一定要在想要变色的控件下面加上这句话self.label.setAutoFillBackground(True)

其中标红的地方是你控件的id,如果不加这句话是不能变色的。

我曾经跨过山和大海,也穿过人山人海,我曾经拥有着的一切,转眼都飘散如烟,我曾经失落失望失掉所有方向,直到看见平凡才是唯一的答案。
——韩寒《平凡之路》

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值