在pyqt gui中升级多个实时传感器
upgrade multiple real time sensors in pyqt 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 Widget,如果你知道另一个请告诉我。
谢谢!
如果您只是想将 self.data 列表中添加的数据添加到 LCD,您可以将其添加到您的 updater()
方法中。
self.login_widget.Temperatura.display(self.data[-1])
self.login_widget.etanol.display((self.data[-1]*100))
如果您希望将数据从 arduino 发送到 python,请查看此内容;
Sending Data From Arduino to Python
如果这不是您想要的结果,您能否更具体地说明您想要展示的内容?
有趣的是我会尝试,但我想添加 3 个不同的数据,一个来自模拟检查器(加速度计),这是我不会绘制的,另一个 2,来自串行,我连接了一个 arduino到测量温度和燃料中乙醇百分比的传感器。我想在液晶小部件中显示它们。现在代替模拟输入使用随机数,另外 2 个可以显示任何其他东西,如正弦或余弦,但 3 个元素显示不同的东西。我将尝试使用您向我展示的代码行来创建 2 个其他变量,例如 slef.datatemp 和 self.dataethanol。如果有效,我会发表评论。我使用随机数的原因是因为它可以让我在任何计算机上执行代码并修复错误,然后我会根据需要改变数据。评论太长了。
谢谢!
我正在创建一个 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 Widget,如果你知道另一个请告诉我。
谢谢!
如果您只是想将 self.data 列表中添加的数据添加到 LCD,您可以将其添加到您的 updater()
方法中。
self.login_widget.Temperatura.display(self.data[-1])
self.login_widget.etanol.display((self.data[-1]*100))
如果您希望将数据从 arduino 发送到 python,请查看此内容; Sending Data From Arduino to Python
如果这不是您想要的结果,您能否更具体地说明您想要展示的内容?
有趣的是我会尝试,但我想添加 3 个不同的数据,一个来自模拟检查器(加速度计),这是我不会绘制的,另一个 2,来自串行,我连接了一个 arduino到测量温度和燃料中乙醇百分比的传感器。我想在液晶小部件中显示它们。现在代替模拟输入使用随机数,另外 2 个可以显示任何其他东西,如正弦或余弦,但 3 个元素显示不同的东西。我将尝试使用您向我展示的代码行来创建 2 个其他变量,例如 slef.datatemp 和 self.dataethanol。如果有效,我会发表评论。我使用随机数的原因是因为它可以让我在任何计算机上执行代码并修复错误,然后我会根据需要改变数据。评论太长了。 谢谢!