@kramick

Как зафиксировать изменение переменной?

Привет! Для тестирования своих ранее полученных знаний об библиотеке Tkinter я решил создать небольшое приложение, которое выводило пользователю его количество сообщений ВК. Реализовал, но так же решил дополнить приложение системным звуком, мол, как в самом ВК звук, когда тебе приходит новое сообщение.

Но столкнулся с проблемой - звук воспроизводится бесконечное количество раз пока ты не проверишь сообщение. Подскажите как можно реализовать воспроизведение так, чтобы он проигрывался только один раз при новом сообщении? Как зафиксировать изменение переменной "количество непрочитанных сообщений"
P.S модуль core, который я импортирую в коде, импортирует функцию, возвращающая кол-во непрочитанных сообщений

from tkinter import *
import core

'''Создаём GUI для Vk Mini'''

def update_root():    # функция обновления окна
    count_messages.config(text= f'У вас {core.unread_messages()} новых сообщений!')
    root.after(1000, update_root)

root = Tk()

img = PhotoImage(file='path')
lab = Label(image=img)
lab.img = 'path'
lab.pack(side=LEFT)    # выводим на экран иконку вконтакте с левой стороны

count_messages = Label(    # количество сообщений
    text = f'У вас {core.unread_messages()} новых сообщений!',
    width=25,
    height=5,
    fg='black'
)
count_messages.pack(side=TOP) # выводим текст (выше)

root.after(1000, update_root()) # обновляем окно каждую секунду
root.mainloop()
  • Вопрос задан
  • 66 просмотров
Решения вопроса 1
@Serg_sel
Я, конечно, не особо знаю python, но можно попробовать избавиться от бесконечного звука примерно таким образом, плюс это проверка на изменение количества непрочитанных сообщений (причём если их будет меньше, но не 0, то ничего опять же не произойдет):
old_unread_messages = 0 # если при запуске программы не нужен сразу звук уведомления, использовать нижнюю строчку
# old_unread_messages = core.unread_messages
ping = False
if old_unread_messages - core_unread_messages >= 0 and not ping and core.unread_messages != 0:
    # тут вызов звука уведомления
    ping = True

Конечно, это наверное костыль, но ничего лучше я ещё не придумал
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы