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())