Python 3.x 使用pyqt5读取特定值时更改QLCDNAMER颜色
我有一个读取传感器数据的代码,并将其输出到我使用的python3和pyqt5的LCD编号 现在,我一直在做轮胎没有运气是改变背景颜色的LCD数字时,它达到一定的价值。e、 g.当值低于100时,LCD窗口小部件的背景为红色或图像显示过低,如果介于100-300之间,则为绿色,超过300时,再次变为红色。我希望这是有意义的,有人知道我如何使用pyqt5实现这一点吗 以下是我的LCD编号代码的相关部分Python 3.x 使用pyqt5读取特定值时更改QLCDNAMER颜色,python-3.x,user-interface,pyqt5,background-color,qlcdnumber,Python 3.x,User Interface,Pyqt5,Background Color,Qlcdnumber,我有一个读取传感器数据的代码,并将其输出到我使用的python3和pyqt5的LCD编号 现在,我一直在做轮胎没有运气是改变背景颜色的LCD数字时,它达到一定的价值。e、 g.当值低于100时,LCD窗口小部件的背景为红色或图像显示过低,如果介于100-300之间,则为绿色,超过300时,再次变为红色。我希望这是有意义的,有人知道我如何使用pyqt5实现这一点吗 以下是我的LCD编号代码的相关部分 class Worker(QtCore.QThread): valueFound = Qt
class Worker(QtCore.QThread):
valueFound = QtCore.pyqtSignal(int, name="valueFound")
使用Qt样式表
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;
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_())
导入系统
从随机导入randint
从PyQt5.QtWidgets导入QApplication,QMainWindow
从PyQt5.QtCore导入QTimer
从ui导入ui_主窗口
班级表格(QMainWindow):
定义初始化(自):
super()。\uuuu init\uuuuu()
self.ui=ui\u主窗口()
self.ui.setupUi(self)
self.i=0
自电压=180
自电压最大值=180
self.ui.lcdNumberCur.display(self.i)
self.ui.lcdNumberCur.setStyleSheet(“QLCDNumberNumber{背景色:黄色}”)
self.ui.button.clicked.connect(self.startTimer)
self.timer=QTimer(self)
自动定时器设置间隔(1000)
self.timer.timeout.connect(self.updateData)
self.show()
def startTimer(自):
如果self.ui.putton.text()=“启动计时器”:
自动定时器启动(1000)
self.ui.button.setText(“停止计时器”)
其他:
self.ui.button.setText(“启动计时器”)
self.timer.stop()
def更新数据(自身):
电压=randint(80350)#自电压最大值:
自电压最大=电压
self.ui.lcdNumberMax.display(self.voltageMax)
如果self.voltageMax>300:
self.ui.lcdNumberMax.setStyleSheet(““”QLCDNumber{
背景色:红色;
颜色:白色;}“”)
其他:
self.ui.lcdNumberMax.setStyleSheet(““”QLCDNumber
{背景色:绿色;
颜色:黄色;
}""")
elif电压<自电压:
自电压=电压
self.ui.lcdNumberMin.display(self.voltageMin)
如果自电压小于90:
self.ui.lcdNumberMin.setStyleSheet(““”QLCDNumber{
背景色:红色;
颜色:白色;}“”)
其他:
self.ui.lcdNumberMin.setStyleSheet(““”QLCDNumber
{背景色:绿色;
颜色:黄色;
}""")
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app=QApplication(sys.argv)
frm=形式()
sys.exit(app.exec_())
谢谢@S.Nick,这对我很有效。你知道这是否也适用于图像?因此,它将LCD编号的样式表更改为图像,而不是颜色。@Almas Shah抱歉,我不理解你的问题。创建一个新问题,并随问题附上示例代码。
self.worker = Worker(self)
self.worker.valueFound.connect(self.OnValueFound)
def OnValueFound(self, value):
self.ui.lcdNumber.display(value)
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;
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_())