import sys
import random
from PySide6.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QTextEdit
from PySide6.QtCore import QTimer, QTime
class App(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
self.timers = []
def init_ui(self):
self.setWindowTitle('Variable Interval Timers App')
self.setGeometry(100, 100, 800, 600)
self.log = QTextEdit(self)
self.log.setReadOnly(True)
self.start_button = QPushButton('Start', self)
self.start_button.clicked.connect(self.start_timers)
self.stop_button = QPushButton('Stop', self)
self.stop_button.clicked.connect(self.stop_timers)
layout = QVBoxLayout(self)
layout.addWidget(self.log)
layout.addWidget(self.start_button)
layout.addWidget(self.stop_button)
def log_time(self, timer_id):
current_time = QTime.currentTime().toString()
self.log.append(f"Timer {timer_id}: {current_time}")
def start_timers(self):
for i in range(30):
interval = random.randint(1, 10) * 1000 # Convert seconds to milliseconds
timer = QTimer(self)
timer.timeout.connect(lambda i=i: self.log_time(i))
timer.start(interval)
self.timers.append(timer)
def stop_timers(self):
for timer in self.timers:
timer.stop()
self.timers.clear()
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = App()
ex.show()
sys.exit(app.exec())