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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/shangxiaqiusuo1/article/details/82704084

首先是界面的布置,代码如下所示,使用的是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,如果不加这句话是不能变色的。

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

展开阅读全文

没有更多推荐了,返回首页