Измените фон QLCDNumber с PyQt5 на изображение - PullRequest
0 голосов
/ 13 сентября 2018

В настоящее время у меня есть программа, которая меняет цвет фона виджета 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;}""")

так, вместо того, чтобы сказать, что цвет фона меняется на другой, он меняется на изображение?

Надеюсь, это имеет смысл.

1 Ответ

0 голосов
/ 13 сентября 2018

Я не знаю, правильно ли я вас понял.Попробуйте 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_())

enter image description here

...