Задать вопрос
  • Как управлять циклом for?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    import tkinter as tk
    
    
    def generator_sequence(data):
        for i in data:
            yield i
    
    
    def next_step():
        global paused, sequence, after_id
    
        if not paused:
            try:
                value = next(sequence)
                label.config(text=f"Текущее: {value}")
                after_id = root.after(1000, next_step)  # Планируем следующий шаг.
            except StopIteration:
                label.config(text="Завершено!")
                button.config(state=tk.DISABLED)
    
    
    def toggle_pause():
        global paused, after_id
    
        paused = not paused
        button.config(text="Продолжить" if paused else "Пауза")
    
        if not paused:  # Если сняли паузу.
            if after_id:
                root.after_cancel(after_id)  # Отменяем предыдущий запланированный вызов.
            next_step()
    
    
    # Инициализация
    root = tk.Tk()
    after_id = None
    paused = True  # Начинаем в состоянии паузы.
    data = ["A", "B", "C", "D", "E"]
    sequence = generator_sequence(data)
    
    label = tk.Label(root, text="Нажмите 'Старт'")
    label.pack(pady=10)
    
    button = tk.Button(root, text="Старт", command=toggle_pause)
    button.pack()
    
    root.mainloop()


    Если никакой дополнительной логики не нужно и последовательность уже существует, то можно без generator_sequence просто: sequence = iter(data) .
    Ответ написан
    6 комментариев