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