Я работаю над настройкой панели управления для операторов. всякий раз, когда сердцебиение прекращает увеличиваться, через 5 секунд светодиод меняется на красный. Это также включает кнопки подтверждения. Когда я нажимаю на них, индикатор горит желтым, и я хотел бы снова отключить кнопку. Проблема в том, что по какой-то причине он работает только для некоторых кнопок в моем коде. Есть идеи, почему это может быть? Это работает только для кнопок на левой стороне, а не на правой стороне. Я уверен, что ошибка происходит в «heartbeats [string] [5] .setEnabled (False)»
def ack_thread(string):
ack = threading.Thread(target=acknowledge, args=(string,))
ack.start()
def acknowledge(string):
global heartbeats
rowcount = ui.tableWidget.rowCount()
for x in range(0, rowcount, 1):
if ui.tableWidget.item(x,0).text() == string:
print(ui.tableWidget.item(x,0).text())
if ui.tableWidget.item(x,4).text() == 'False':
ui.tableWidget.setItem(x, 4, QtWidgets.QTableWidgetItem("True"))
ui.tableWidget.viewport().update()
heartbeats[string][3].setPixmap(ui.yellowled)
print(heartbeats[string][5])
# heartbeats[string][5].setEnabled(True)
heartbeats[string][5].setEnabled(False)
def gettime():
import datetime
currentDT = datetime.datetime.now()
return currentDT.strftime("%Y-%m-%d %H:%M:%S")
def alarm_handler(source):
rowPosition = ui.tableWidget.rowCount()
ui.tableWidget.insertRow(rowPosition)
ui.tableWidget.setItem(rowPosition, 0, QtWidgets.QTableWidgetItem(source))
ui.tableWidget.setItem(rowPosition, 1, QtWidgets.QTableWidgetItem("text1"))
ui.tableWidget.setItem(rowPosition, 2, QtWidgets.QTableWidgetItem("text2"))
ui.tableWidget.setItem(rowPosition, 3, QtWidgets.QTableWidgetItem(gettime()))
ui.tableWidget.setItem(rowPosition, 4, QtWidgets.QTableWidgetItem("False"))
def heartbeat():
import mhs2
from time import sleep
global heartbeats
mhs2.DB_CONFIG['host'] = '192.168.1.79'
# old value, new value, number of failures, LED object, checkbutton object, Acknowledge object,acknowledged
heartbeats = {
'pd1_hb': [0, 0, 0, ui.label_26, ui.checkBox_7, ui.pushButton_11, True],
'pd9_hb': [0, 0, 0, ui.label_20, ui.checkBox_12, ui.pushButton_13, True],
'pd11_hb': [0, 0, 0, ui.label_21, ui.checkBox_11, ui.pushButton_12, True],
'pd13_hb': [0, 0, 0, ui.label_22, ui.checkBox_13, ui.pushButton_2, True],
'irr1_hb': [0, 0, 0, ui.label_25, ui.checkBox_8, ui.pushButton_5, True],
'irr2_hb': [0, 0, 0, ui.label_24, ui.checkBox_9, ui.pushButton_4, True],
'irr5_hb': [0, 0, 0, ui.label_23, ui.checkBox_10, ui.pushButton_3, True],
'kyledata_hb': [0, 0, 0, ui.label_14, ui.checkBox, ui.pushButton, True],
'standata_hb': [0, 0, 0, ui.label_19, ui.checkBox_3, ui.pushButton_10, True],
'kennydata_hb': [0, 0, 0, ui.label_18, ui.checkBox_4, ui.pushButton_9, True],
'cartmandata_hb': [0, 0, 0, ui.label_17, ui.checkBox_6, ui.pushButton_8, True],
'chefdata_hb': [0, 0, 0, ui.label_16, ui.checkBox_5, ui.pushButton_6, True],
'buttarsdata_hb': [0, 0, 0, ui.label_15, ui.checkBox_2, ui.pushButton_7, True]
}
for item in heartbeats:
heartbeats[item][3].setPixmap(ui.offled)
query = "SELECT * FROM Heartbeat"
enable = mhs2.exec_query(query)
for row in enable:
if row['enable'] == 1:
heartbeats[row['parameter']][4].setChecked(True)
else:
heartbeats[row['parameter']][4].setChecked(False)
while 1:
command = "SELECT * FROM Heartbeat"
hb = mhs2.exec_query(command)
for row in hb:
if heartbeats[row['parameter']][4].isChecked():
heartbeats[row['parameter']][1] = row['value']
if heartbeats[row['parameter']][1] != heartbeats[row['parameter']][0]:
heartbeats[row['parameter']][2] = 0
heartbeats[row['parameter']][3].setPixmap(ui.greenled)
heartbeats[row['parameter']][6] = True
else:
heartbeats[row['parameter']][2] += 1
if heartbeats[row['parameter']][2] > 5 and heartbeats[row['parameter']][6]:
heartbeats[row['parameter']][3].setPixmap(ui.redled)
heartbeats[row['parameter']][5].setEnabled(True)
heartbeats[row['parameter']][6] = False
alarm = threading.Thread(target=alarm_handler,args=(row['parameter'],))
alarm.start()
heartbeats[row['parameter']][0] = heartbeats[row['parameter']][1]
else:
heartbeats[row['parameter']][3].setPixmap(ui.offled)
sleep(1)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Dialog = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(Dialog)
Dialog.show()
hb = threading.Thread(target=heartbeat)
hb.start()
sys.exit(app.exec_())