使用 PyQt5 将 QLCDNumber 的背景更改为图像

Change Background of QLCDNumber with PyQt5 to an image

我目前有一个程序可以在 lcd 数字上显示某个值时更改 QLCDumber 小部件的背景颜色,是否可以在达到某个值时代替颜色作为背景图片出现在背景中,例如笑脸?

这是我负责更改颜色的代码的相关片段。

def OnValueFound(self, value):
        self.ui.lcdNumber.display(value)
        if 100 < value < 300:
            self.ui.lcdNumber.setStyleSheet("""QLCDNumber {background-color: green; color: black;}""")
        else:
            self.ui.lcdNumber.setStyleSheet("""QLCDNumber {background-color:red; color: black;}""")

所以不是说背景颜色变成另一种颜色而是变成图像?

我希望这是有道理的。

不知道我是否理解正确。试一试border-image: url(E:/_Qt/img/heart.png);

import sys
from random          import randint
from PyQt5.QtWidgets import QApplication, QMainWindow 
from PyQt5.QtCore    import QTimer

from ui import Ui_MainWindow

class Form(QMainWindow):
    def __init__(self):
        super().__init__()

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

        self.i = 0 
        self.voltageMin = 180 
        self.voltageMax = 180
        self.ui.lcdNumberCur.display(self.i)
        self.ui.lcdNumberCur.setStyleSheet("""QLCDNumber { 
                                              background-color: yellow;
                                           }""")

        self.ui.pushButton.clicked.connect(self.startTimer)

        self.timer = QTimer(self)  
        self.timer.setInterval(1000)
        self.timer.timeout.connect(self.updateData)

        self.show()        

    def startTimer(self):  
        if self.ui.pushButton.text() == "Start Timer":
            self.timer.start(1000) 
            self.ui.pushButton.setText("Stop Timer")            
        else:
            self.ui.pushButton.setText("Start Timer")
            self.timer.stop() 

    def updateData(self):
        voltage = randint(80, 350)                  # <--- insert your average voltage here
        self.ui.lcdNumberCur.display(voltage) 
        if voltage > self.voltageMax:
            self.voltageMax = voltage
            self.ui.lcdNumberMax.display(self.voltageMax) 
            if self.voltageMax > 300:
                self.ui.lcdNumberMax.setStyleSheet("""QLCDNumber { 
                                                    /* background-color: red; */
                                                    border-image: url(E:/_Qt/img/heart.png);
                                                    color: white; }""")
            else: 
                self.ui.lcdNumberMax.setStyleSheet("""QLCDNumber 
                                                   { background-color: green; 
                                                     color: yellow;
                                                   }""")

        elif voltage < self.voltageMin:
            self.voltageMin = voltage
            self.ui.lcdNumberMin.display(self.voltageMin)  
            if self.voltageMin < 90:
                self.ui.lcdNumberMin.setStyleSheet("""QLCDNumber { 
                                                    background-color: red; 
                                                    color: white; }""")
            else: 
                self.ui.lcdNumberMin.setStyleSheet("""QLCDNumber 
                                                   { background-color: green; 
                                                     color: yellow;
                                                   }""")            


if __name__ == '__main__':
    app = QApplication(sys.argv)
    frm = Form()
    sys.exit(app.exec_())