pyqt改变背景颜色

 

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

 
  1. # -*- coding: utf-8 -*-

  2.  
  3. # Form implementation generated from reading ui file 'untitled.ui'

  4. #

  5. # Created by: PyQt5 UI code generator 5.6

  6. #

  7. # WARNING! All changes made in this file will be lost!

  8.  
  9. from PyQt5 import QtCore, QtGui, QtWidgets

  10.  
  11. class Ui_MainWindow(object):

  12. def setupUi(self, MainWindow):

  13. MainWindow.setObjectName("MainWindow")

  14. MainWindow.resize(800, 600)

  15. self.centralwidget = QtWidgets.QWidget(MainWindow)

  16. self.centralwidget.setObjectName("centralwidget")

  17. self.btn_1 = QtWidgets.QPushButton(self.centralwidget)

  18. self.btn_1.setGeometry(QtCore.QRect(220, 191, 75, 23))

  19. self.btn_1.setObjectName("btn_1")

  20. self.btn_2 = QtWidgets.QPushButton(self.centralwidget)

  21. self.btn_2.setGeometry(QtCore.QRect(220, 220, 75, 23))

  22. self.btn_2.setObjectName("btn_2")

  23. self.btn_3 = QtWidgets.QPushButton(self.centralwidget)

  24. self.btn_3.setGeometry(QtCore.QRect(220, 249, 75, 23))

  25. self.btn_3.setObjectName("btn_3")

  26. self.btn_4 = QtWidgets.QPushButton(self.centralwidget)

  27. self.btn_4.setGeometry(QtCore.QRect(220, 278, 75, 23))

  28. self.btn_4.setObjectName("btn_4")

  29. self.label = QtWidgets.QLabel(self.centralwidget)

  30. self.label.setGeometry(QtCore.QRect(310, 190, 71, 101))

  31. font = QtGui.QFont()

  32. font.setFamily("Arial")

  33. font.setPointSize(36)

  34. self.label.setFont(font)

  35. self.label.setAlignment(QtCore.Qt.AlignCenter)

  36. self.label.setObjectName("label")

  37. self.btn_exit = QtWidgets.QPushButton(self.centralwidget)

  38. self.btn_exit.setGeometry(QtCore.QRect(220, 330, 75, 23))

  39. self.btn_exit.setObjectName("btn_exit")

  40. MainWindow.setCentralWidget(self.centralwidget)

  41. self.menubar = QtWidgets.QMenuBar(MainWindow)

  42. self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))

  43. self.menubar.setObjectName("menubar")

  44. MainWindow.setMenuBar(self.menubar)

  45. self.statusbar = QtWidgets.QStatusBar(MainWindow)

  46. self.statusbar.setObjectName("statusbar")

  47. MainWindow.setStatusBar(self.statusbar)

  48.  
  49. self.retranslateUi(MainWindow)

  50. QtCore.QMetaObject.connectSlotsByName(MainWindow)

  51.  
  52. def retranslateUi(self, MainWindow):

  53. _translate = QtCore.QCoreApplication.translate

  54. MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))

  55. self.btn_1.setText(_translate("MainWindow", "1"))

  56. self.btn_2.setText(_translate("MainWindow", "2"))

  57. self.btn_3.setText(_translate("MainWindow", "3"))

  58. self.btn_4.setText(_translate("MainWindow", "4"))

  59. self.label.setText(_translate("MainWindow", "0"))

  60. self.btn_exit.setText(_translate("MainWindow", "退出"))

  61.  

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

 
  1. # -*- coding: utf-8 -*-

  2. '''

  3. 通过按钮改变Label的背景颜色

  4. '''

  5. import os

  6. import sys

  7. import time

  8. from tqdm import tqdm

  9. from PyQt5.QtWidgets import QApplication, QWidget, QMessageBox, QMainWindow

  10. from PyQt5.QtGui import QPalette

  11. from PyQt5.QtCore import Qt

  12. from application.NewUi.untitled import Ui_MainWindow

  13.  
  14.  
  15. class my_window(Ui_MainWindow, QMainWindow):

  16. def __init__(self):

  17. super(my_window, self).__init__()

  18. self.setupUi(self)

  19. self.label.setAutoFillBackground(True)

  20. global palette_red, palette_green, palette_blue, palette_yellow

  21. palette_red = QPalette()

  22. palette_green = QPalette()

  23. palette_blue = QPalette()

  24. palette_yellow = QPalette()

  25. palette_red.setColor(QPalette.Window, Qt.red)

  26. palette_green.setColor(QPalette.Window, Qt.green)

  27. palette_blue.setColor(QPalette.Window, Qt.blue)

  28. palette_yellow.setColor(QPalette.Window, Qt.yellow)

  29. self.btn_1.clicked.connect(self.btn_1_clicked)

  30. self.btn_2.clicked.connect(self.btn_2_clicked)

  31. self.btn_3.clicked.connect(self.btn_3_clicked)

  32. self.btn_4.clicked.connect(self.btn_4_clicked)

  33. self.btn_exit.clicked.connect(self.exit_systerm)

  34. self.setWindowTitle('通过按钮改变Label的背景颜色')

  35.  
  36. def btn_1_clicked(self):

  37. self.label.setPalette(palette_red)

  38.  
  39. def btn_2_clicked(self):

  40. self.label.setPalette(palette_blue)

  41.  
  42. def btn_3_clicked(self):

  43. self.label.setPalette(palette_green)

  44.  
  45. def btn_4_clicked(self):

  46. self.label.setPalette(palette_yellow)

  47.  
  48. def exit_systerm(self):

  49. self.close()

  50.  
  51. def closeEvent(self, event):

  52. reply = QMessageBox.question(self, 'Exit', 'Are you sure to quit?', QMessageBox.Yes | QMessageBox.Cancel)

  53. if reply == QMessageBox.Yes:

  54. event.accept()

  55. else:

  56. event.ignore()

  57.  
  58.  
  59. if __name__ == '__main__':

  60. app = QApplication(sys.argv)

  61. w = my_window()

  62. w.show()

  63. sys.exit(app.exec_())

  64.  

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

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

PyQt中,改变QLabel的背景颜色可以通过多种方法实现。以下是几种常见的方法: 1. **使用样式表(Stylesheet)**: 样式表是一种强大的方式,可以像CSS一样设置控件的外观。 ```python from PyQt5.QtWidgets import QApplication, QLabel import sys app = QApplication(sys.argv) label = QLabel("Hello, PyQt!") label.setStyleSheet("background-color: yellow;") label.show() sys.exit(app.exec_()) ``` 2. **使用`setAutoFillBackground`和方法`QPalette`**: 这种方法通过设置调色板来改变背景颜色。 ```python from PyQt5.QtWidgets import QApplication, QLabel from PyQt5.QtGui import QPalette import sys app = QApplication(sys.argv) label = QLabel("Hello, PyQt!") label.setAutoFillBackground(True) palette = label.palette() palette.setColor(QPalette.Window, Qt.yellow) label.setPalette(palette) label.show() sys.exit(app.exec_()) ``` 3. **使用`paintEvent`方法**: 通过重写`paintEvent`方法,可以更灵活地绘制背景。 ```python from PyQt5.QtWidgets import QApplication, QLabel from PyQt5.QtGui import QPainter, QColor import sys class ColoredLabel(QLabel): def __init__(self, color, *args, **kwargs): super(ColoredLabel, self).__init__(*args, **kwargs) self.color = color self.setAutoFillBackground(True) def paintEvent(self, event): painter = QPainter(self) painter.setBrush(QColor(self.color)) painter.drawRect(self.rect()) app = QApplication(sys.argv) label = ColoredLabel("yellow") label.setText("Hello, PyQt!") label.show() sys.exit(app.exec_()) ``` 以上方法都可以实现改变QLabel的背景颜色,选择哪种方法取决于具体的需求和偏好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值