Как можно подключить мой ЖК-дисплей к тесту класса, чтобы отображался символ x? - PullRequest
0 голосов
/ 22 апреля 2019

Я пытаюсь создать графический интерфейс, который показывает машинные данные, взятые из Raspberry.

К сожалению, я не могу обновить свою поверхность QT-Desinger.

Так что я сейчас пробую на этом "тестовом классе", но, к сожалению, не удалась

Это было у меня уже есть. Чего-то не хватает ... но я не знаю, что

x = 0
class Ui_Form(threading.Thread):

    def __init__(self):
        threading.Thread.__init__(self)
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(400, 300)
        self.lcdNumber = QtWidgets.QLCDNumber(Form)
        self.lcdNumber.setGeometry(QtCore.QRect(10, 50, 361, 191))
        self.lcdNumber.setObjectName("lcdNumber")
        self.lcdNumber.display(x)
        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))

    def run(self):
        if __name__ == "__main__":
            app = QtWidgets.QApplication(sys.argv)
            Form = QtWidgets.QWidget()
            ui = Ui_Form()
            ui.setupUi(Form)
            Form.show()
            sys.exit(app.exec_())

class Test(threading.Thread):

    global x
    def __init__(self):
        threading.Thread.__init__(self)
    def runs(self):
        while x <= 20:
            print(x)
            x = x + 1
            time.sleep(2)

t = Ui_Form()
t1 = Test()

t.start()
t1.start()

счетчик показывает 0, и цикл вообще не запускается ..

Моя цель состояла в том, чтобы ЖК-дисплей постоянно обновлялся. это возможно ?

спасибо

1 Ответ

0 голосов
/ 22 апреля 2019

Для обновления значения x, QTimer - лучший способ при использовании PyQt, вам не нужно использовать модуль потоков

from PyQt5.Qt import QLCDNumber, QDialog, QPushButton, QVBoxLayout, QApplication,QTimer
import sys

class LCD(QDialog):
    x = 0
    def __init__(self):
        super(LCD, self).__init__()

        self.lcdNumber = QLCDNumber()
        self.pushStart = QPushButton("Start")
        self.pushStart.clicked.connect(self.update)

        vBox = QVBoxLayout()
        vBox.addWidget(self.lcdNumber)
        vBox.addWidget(self.pushStart)

        self.setLayout(vBox)

        self.timer = QTimer()
        self.timer.timeout.connect(self.update)

    def update(self):
        self.lcdNumber.display(str(self.x))
        self.x += 1
        self.timer.start(1000)

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