PySide6测试超时进行报警例子
import sys
from PySide6.QtCore import QTimer
from PySide6.QtWidgets import QApplication, QMessageBox, QWidget, QVBoxLayout, QPushButton
HKname = 0
result = 0
class AlarmSystem(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
self.setup_timers()
def init_ui(self):
self.setWindowTitle("超时报警系统")
self.setGeometry(100, 100, 300, 200)
layout = QVBoxLayout(self)
self.trigger_hkname_button = QPushButton("触发相机采集完成")
self.trigger_hkname_button.clicked.connect(self.simulate_hkname)
layout.addWidget(self.trigger_hkname_button)
self.trigger_result_button = QPushButton("触发算法结果完成")
self.trigger_result_button.clicked.connect(self.simulate_result)
layout.addWidget(self.trigger_result_button)
def setup_timers(self):
self.timer_check = QTimer(self)
self.timer_check.timeout.connect(self.check_timeout)
self.timeout_timer = QTimer(self)
self.timeout_timer.setSingleShot(True)
self.timeout_timer.timeout.connect(self.trigger_alarm)
self.timer_check.start(1000)
def check_timeout(self):
global HKname, result
if HKname == 1:
print("图片采集完成,开始计时...")
HKname = 0
self.timeout_timer.start(5000)
if result == 1:
print("算法结果完成,停止计时器...")
result = 0
self.timeout_timer.stop()
def trigger_alarm(self):
print("超时未接收到算法结果,发出报警!")
QMessageBox.warning(self, "报警", "算法结果未在规定时间内完成!")
def simulate_hkname(self):
"""模拟相机采集完成"""
global HKname
HKname = 1
print("手动触发:相机采集完成信号 (HKname = 1)")
def simulate_result(self):
"""模拟算法结果完成"""
global result
result = 1
print("手动触发:算法结果完成信号 (result = 1)")
if __name__ == "__main__":
app = QApplication(sys.argv)
alarm_system = AlarmSystem()
alarm_system.show()
sys.exit(app.exec())