标签颜色和文本更改

esyap4oy  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(283)

这个问题在这里已经有答案了

pyqt5 qlcnumber不更新(1个答案)
从外部函数访问qlcdnumber对象(1个答案)
raspberry pi上端口或硬件io点的定期轮询(1个答案)
4小时前关门了。
我想要的是pyqt5标签(电源按钮状态)中的gui根据物理按钮的位置(开/关按钮-表示电源状态)进行自我更新。
问题是。。。代码看起来不错,但当我运行时,它只运行一次。。。。它根据按钮的位置显示相应的颜色和文本,但之后程序就会停止运行。
这是我的程序。
希望你能帮我一把!

from PyQt5 import QtWidgets
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
import sys, time

import RPi.GPIO as GPIO

GPIO.setwarnings(False)

GPIO.setmode(GPIO.BCM)

powerButton = 1  # button position in RPi - gpio1
GPIO.setup(powerButton, GPIO.IN)

class MyWindow(QDialog):
    def __init__(self):
        super().__init__()

        self.setGeometry(200, 200, 300, 300)
        self.setWindowTitle("On/Off Color variation")

        self.InitUi()
        self.show()

    def InitUi(self):
        self.label = QtWidgets.QLabel(self)
        if GPIO.input(powerButton) == GPIO.HIGH:
            self.label.setText("Power On")
            self.label.setStyleSheet("background-color: lightgreen")
        elif GPIO.input(powerButton) == GPIO.LOW:
            self.label.setText("Power Off")
            self.label.setStyleSheet("background-color: red")

        self.powerStatus = powerStatusThread()
        self.powerStatus.start()

class powerStatusThread(QThread):
    def run(self):
        while True:
            if GPIO.input(powerButton) == GPIO.HIGH:
                print("Button ON")
                self.label.setText("Power On")
                self.label.setStyleSheet("background-color: lightgreen")
                self.label.update()
            elif GPIO.input(powerButton) == GPIO.LOW:
                print("BUTTON OFF")
                self.label.setText("Power Off")
                self.label.setStyleSheet("background-color: red")
                self.label.update()
            time.sleep(2)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    mainDialog = MyWindow()
    mainDialog.show()
    sys.exit(app.exec_())

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题