我有以下代码。该代码仅显示运行该代码时的传感器读数,不会自动更新。任何人都可以帮助使传感器实时读取吗?
from PyQt4 import QtGui
from PyQt4 import QtCore
import sys
import Adafruit_DHT
sensor_args = { '11': Adafruit_DHT.DHT11,
'22': Adafruit_DHT.DHT22,
'2302': Adafruit_DHT.AM2302 }
humidity, temperature = Adafruit_DHT.read_retry(11, 4)
def main():
app = QtGui.QApplication(sys.argv)
tabs = QtGui.QTabWidget()
tab1 = QtGui.QWidget()
tab2 = QtGui.QWidget()
tabs.setWindowTitle('Weather')
tabs.resize(250, 150)
vBoxlayout1 = QtGui.QVBoxLayout()
vBoxlayout2 = QtGui.QVBoxLayout()
vBoxlayout1.addWidget(QtGui.QLabel('Temp={:0.1f}'.format(temperature) ))
vBoxlayout2.addWidget(QtGui.QLabel('Humidity={:0.1f}%'.format(humidity) ))
vBoxlayout1.setAlignment(QtCore.Qt.AlignCenter)
vBoxlayout2.setAlignment(QtCore.Qt.AlignCenter)
tab1.setLayout(vBoxlayout1)
tab2.setLayout(vBoxlayout2)
tabs.addTab(tab1,"Temp")
tabs.addTab(tab2,"Humidity")
print 'Temp={0:0.1f}* Humidity={1:0.1f}%'.format(temperature, humidity)
tabs.show()
sys.exit(app.exec_())
if ___name___ == '___main___':
main()
您的代码只读取一次传感器,因此它永远不会改变,请执行一个线程,以使读取不会中断主线程。
from PyQt4 import QtGui
from PyQt4 import QtCore
import sys
import Adafruit_DHT
class Thread(QtCore.QThread):
data_sensors = QtCore.pyqtSignal(tuple)
def run(self):
while True:
humidity, temperature = Adafruit_DHT.read_retry(Adafruit_DHT.DHT11, 4)
self.data_sensors.emit((humidity, temperature))
class TabWidget(QtGui.QTabWidget):
def __init__(self, parent=None):
super(TabWidget, self).__init__(parent=parent)
tab1 = QtGui.QWidget()
tab2 = QtGui.QWidget()
self.setWindowTitle('Weather')
self.resize(250, 150)
vBoxlayout1 = QtGui.QVBoxLayout()
vBoxlayout2 = QtGui.QVBoxLayout()
self.lTemp = QtGui.QLabel('Temp={:0.1f}'.format(0))
vBoxlayout1.addWidget(self.lTemp)
self.lHumidity = QtGui.QLabel('Humidity={:0.1f}%'.format(0))
vBoxlayout2.addWidget(self.lHumidity)
vBoxlayout1.setAlignment(QtCore.Qt.AlignCenter)
vBoxlayout2.setAlignment(QtCore.Qt.AlignCenter)
tab1.setLayout(vBoxlayout1)
tab2.setLayout(vBoxlayout2)
self.addTab(tab1, "Temp")
self.addTab(tab2, "Humidity")
thread = Thread(self)
thread.data_sensors.connect(self.update_Sensors)
thread.start()
def update_Sensors(self, data):
humidity, temperature = data
self.lTemp.setText('Temp={:0.1f}'.format(temperature))
self.lHumidity.setText('Humidity={:0.1f}%'.format(humidity))
def main():
app = QtGui.QApplication(sys.argv)
tabs = TabWidget()
tabs.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句