Форум программистов, компьютерный форум, киберфорум
Python: Tkinter
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 13.04.2021
Сообщений: 10

Не выходит сделать правильную задержку

29.04.2025, 11:44. Показов 351. Ответов 2

Студворк — интернет-сервис помощи студентам
Делаю крестики нолики. При окончании игры хочу, чтобы сначала экран очистился, а через секунду вывело надпись "You Win!". Использую функция .after(), что-то типу time.sleep(), но она приостанавливает весь процесс, а потом сразу удаляет и пишет надпись. Пытался что-то там намутить через asyncio, но я пока в нем не разобрался, так что ничего не вышло. Можно это сделать как-то без async, или надо будет в этом разбираться?

вот кусочек кода, где это происходит:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def click(event):
    col = int(event.x//(cWidth/xCells))
    row = int(event.y//(cHeight/yCells))
 
    IIcol, IIrow = GameBase.step(col, row)
    if IIcol is not None:
        addX(col, row)
        if IIrow is not None:
            addO(IIcol, IIrow)
    check = GameBase.winCheck()
    if check is not None:
        game.delete("all")
        game.after(1000)
        game.create_text(cWidth/2, cHeight/2, fill="#33A333", font="Comic 20 bold",
                                text="You Win!")
game здесь это canvas, click происходит, соответственно, при клике мышкой
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.04.2025, 11:44
Ответы с готовыми решениями:

Как сделать задержку в функции не останавливая при этом всю программу?
Здравствуйте. Как можно сделать задержку в функции? Хочу, чтобы при нажатии кнопки в Label менялся...

Как при нажатии выделить правильную radiobutton?
Обьясните пожалуйста кто нибудь почему когда я вызывая новую функцию создания нового окна она...

Сформировать задержку при рисовании в цикле
Пытаюсь вставить задержку в цикл, чтобы на каждой итерации была пауза 1 секунду. Не работает....

2
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
37959 / 20993 / 4298
Регистрация: 12.02.2012
Сообщений: 34,540
Записей в блоге: 14
30.04.2025, 10:56
Python
1
sleep
в помощь.
1
0 / 0 / 0
Регистрация: 30.04.2025
Сообщений: 1
30.04.2025, 21:19
Да, можно реализовать задуманное без asyncio, используя встроенные возможности Tkinter. Проблема в вашем коде в том, что .after() просто планирует выполнение следующей инструкции через указанное время, но не приостанавливает текущую. Чтобы достичь желаемого эффекта, нужно вынести создание текста “You Win!” в отдельную функцию, которая будет вызвана после задержки.

Вот исправленный фрагмент кода:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def click(event):
    col = int(event.x // (cWidth / xCells))
    row = int(event.y // (cHeight / yCells))
 
    IIcol, IIrow = GameBase.step(col, row)
    if IIcol is not None:
        addX(col, row)
        if IIrow is not None:
            addO(IIcol, IIrow)
 
    check = GameBase.winCheck()
    if check is not None:
        game.delete("all")  # Сначала очищаем canvas
        game.after(1000, show_win_message)  # Планируем показ сообщения через 1 секунду
 
def show_win_message():
    game.create_text(cWidth/2, cHeight/2, fill="#33A333", font="Comic 20 bold",
                           text="You Win!")
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.04.2025, 21:19
Помогаю со студенческими работами здесь

При выходе за правую границу холста показать кружок слева на той же линии, а при выходе за нижнюю границу - сверху
Модернизация. Сделайте так, чтобы при выходе за правую границу холста кружок появлялся слева на той...

Задержка при отрисовке квадрата
Здравствуйте, дорогие форумчане! Нужна Ваша помощь. Написал код, который рисует прямоугольник, а...

Wxpython. Задержка для подсказки
Привет. Подскажите, как можно сделать задержку для подсказки? Пытался использовать wx.ToolTip и...

Задержка на сигнал от QSlader
Всем привет. Пытаюсь реализовать задержку на вывод значений с QSlader. Пробовал пример со...

PYQT5 Задержка при зажатии кнопки
Создаю объект, который можно двигать WASD, объект двигается, но когда я зажимаю кнопку он он...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Размещения без повторений
VistaSV30 31.05.2025
Код возвращает список вариантов размещений A^{k}_{n}=\frac{n!}{(n-k)!} from itertools import permutations def pwr(k, n): # Размещение без повторений (Placement without repetition) if k. . .
Redis и Node.js с TypeScript - решения для высоконагруженных систем
Reangularity 31.05.2025
Redis (Remote Dictionary Server) — сверхбыстрое хранилище данных в памяти, способное обрабатывать операции за микросекунды. И что особенно важно для нас — с удивительно простым API. А теперь. . .
Unit-тестирование с моками в Go
golander 31.05.2025
Большинство разработчиков предпочитают тестировать код без использования моков. Например, при интеграции с Elasticsearch логичнее запустить контейнер локально и тестировать Go-код непосредственно с. . .
Как работать с PDF в C#
stackOverflow 31.05.2025
Нам приходится сталкиваться с PDF по разным причинам. Генерация счетов, создание отчетов, извлечение данных из загруженных пользователем документов, автоматизация рабочих процесов - это лишь верхушка. . .
Двухбуквенные коды стран в шифровании.
russiannick 31.05.2025
Человечество издревле манила возможность замены сочетаний букв вымышленными символами, делающие сообщение понятным только для посвещенных. Настала пора внести в это свой вклад. Двухбуквенные коды. . .
Мой опыт в исправлении ошибки приложения Boinc в части заряда батареи смартфона.
Programma_Boinc 31.05.2025
Мой опыт в исправлении ошибки приложения Boinc в части заряда батареи смартфона. Хотел бы поделиться опытом в исправлении ошибки приложения в части заряда батареи смартфона. Сразу скажу, что. . .
Добро пожаловать на конкурс PrimeGrid, посвященный 20-летию PrimeGrid
Programma_Boinc 31.05.2025
Добро пожаловать на конкурс PrimeGrid, посвященный 20-летию PrimeGrid: 5-дневный обобщенный поиск простых чисел Ферма n = 20 с 12 июня 20:20 UTC по 17 июня 20:20 UTC. 12 июня 2005 года. . .
Вероятность в шансы / Шансы в вероятность
VistaSV30 31.05.2025
# Шансы -> Вероятность def Chance_to_Probability(ch): def gcd(a, b): # НОД - нужен для упрощения значений шансов while b != 0: a, b = b, a % b return a. . .
FastAPI и Flask: Отличия, производительность и примеры использования
py-thonny 30.05.2025
Если вы разрабатываете веб-приложения на Python, вы наверняка слышали о Flask и FastAPI. Эти два фреймворка часто становятся предметом жарких дискуссий в сообществе разработчиков. И не без основания. . .
ML.NET и TensorFlow.NET: Умные приложения на C# с машинным обучением
stackOverflow 30.05.2025
Еще совсем недавно, когда речь заходила о машинном обучении, C# разработчики обреченно вздыхали и тянулись к Python. Мир искуственного интеллекта словно был огражден невидимым забором с табличкой. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »