簡體   English   中英

在pyqt gui中升級多個實時傳感器

[英]upgrade multiple real time sensors in pyqt gui

我創建了一個GUI(圖形用戶界面),該GUI讀取3個傳感器並將2個顯示為lcd,並繪制另一個。 我已經能夠使用所需元素創建GUI並在按下按鈕時開始測量。 但是它僅適用於繪圖系統。 我無法使其他2台顯示器正常工作。 在簡歷中,我無法理解更新系統的工作方式。 注意,到現在所有的東西都在處理隨機數,然后我將更改更新以采用我需要的元素。

from PyQt4 import QtCore, QtGui
import pyqtgraph as pg
import random
from math import*
class MainWindow(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.central_widget = QtGui.QStackedWidget()
        self.setCentralWidget(self.central_widget)
        self.login_widget = LoginWidget(self)
        self.login_widget.button.clicked.connect(self.plotter)
        self.central_widget.addWidget(self.login_widget)
    def plotter(self):
        self.data =[0]
        self.start = time.time()
        self.curve = self.login_widget.plot.getPlotItem().plot()
        self.timer = QtCore.QTimer()
        self.timer.timeout.connect(self.updater)
        self.timer.start(0)
    def updater(self):
        self.data.append(self.data[-1]+0.2*(0.5-random.random()))
        self.curve.setData(self.data)
        self.end = time.time()
        self.login_widget.Temperatura.display(self.data[-1])
        self.login_widget.etanol.display(self.end-self.start)
class LoginWidget(QtGui.QWidget):
    def __init__(self, parent=None):
        super(LoginWidget, self).__init__(parent)
        layout = QtGui.QVBoxLayout()
        hbox1 = QtGui.QHBoxLayout()
        hbox2 = QtGui.QHBoxLayout()
        hbox3 = QtGui.QHBoxLayout()
        self.button = QtGui.QPushButton('Start')
        self.button2 = QtGui.QPushButton('Save')
        self.plot = pg.PlotWidget()
        self.setLayout(layout)
        self.Temperatura = QtGui.QLCDNumber(self)
        self.Temperatura.setStyleSheet("QWidget { background-color: rgb(100, 100, 255) }")
        self.etanol = QtGui.QLCDNumber(self)
        self.WindowSize = QtGui.QLabel("Temperature")
        self.SampPts = QtGui.QLabel("% Ethanol")
        layout.addLayout(hbox1)
        hbox1.addWidget(self.button2)
        hbox1.addWidget(self.button)
        layout.addLayout(hbox2)
        hbox2.addWidget(self.WindowSize)
        hbox2.addWidget(self.SampPts)
        layout.addLayout(hbox3)
        hbox3.addWidget(self.Temperatura)
        hbox3.addWidget(self.etanol)
        layout.addWidget(self.plot)
if __name__ == '__main__':
    app = QtGui.QApplication([])
    window = MainWindow()
    window.show()
    app.exec_()

預期結果是,只要按下按鈕,所有元素應顯示不同的隨機數並開始繪制。 到目前為止,它只是開始繪圖。 我不喜歡LCD小部件,如果您知道另一個,請告訴我。

謝謝!

如果您只是嘗試將self.data列表中添加的數據添加到LCD,則可以將其添加到updater()方法。

self.login_widget.Temperatura.display(self.data[-1])
self.login_widget.etanol.display((self.data[-1]*100))

如果您想將數據從arduino發送到python,請看一下; 將數據從Arduino發送到Python

如果這不是期望的結果,您能否更具體地說明您要顯示的內容?

有趣的是,我嘗試一下,但是我想添加3個不同的數據,一個來自模擬傳感器(加速度計),這是我不想繪制的,另外兩個來自串行,我將arduino連接到可以測量的傳感器溫度和燃料中乙醇的百分比。 我都想在LCD小部件中顯示它們。 現在,它使用一個隨機數代替模擬輸入,另外兩個可以顯示其他任何東西,例如正弦或余弦,但是三個元素可以顯示不同的東西。 我將嘗試向您展示的代碼行創建另外兩個變量,例如slef.datatemp和self.dataethanol。 我會評論它是否有效。 我使用隨機數的原因是因為它可以讓我在計算機上執行代碼並糾正錯誤,然后我會根據自己的意願來處理數據。 評論太久了。 謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM