首先是界面的布置,代码如下所示,使用的是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,如果不加这句话是不能变色的。
我曾经跨过山和大海,也穿过人山人海,我曾经拥有着的一切,转眼都飘散如烟,我曾经失落失望失掉所有方向,直到看见平凡才是唯一的答案。
——韩寒《平凡之路》