Окно ткинтера иногда пропадает - PullRequest
0 голосов
/ 17 марта 2020

Добрый день!

У меня проблема с tkinter, которую я не могу решить самостоятельно. Я хочу отобразить обратный отсчет в окне, которое будет расположено над моей панелью задач, как на картинке ниже.

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

При выполнении различных тестов я отмечал различные ситуации:

  • Когда я открываю полноэкранное окно, которое будет покрывать мою панель задач, моя программа будет отображаться выше это окно, но исчезает, когда я закрываю полноэкранное окно. Если я снова открою это окно, моя программа снова откроется над ним и исчезнет, ​​как только я закрою окно.
  • При наведении курсора мыши на приложение, открытое на панели задач (например, когда я хочу выбрать указанная вкладка c в моем браузере), моя программа исчезает.
  • Когда я ничего не делаю на моем компьютере, моя программа остается видимой, как я хочу. В общем, кажется, что если я не буду взаимодействовать с панелью задач, моя программа останется видимой.

Я прочитал ответ на вопрос Почему мое окно Tkinter иногда не отображается Дисплей вообще? и тестировал несколько позиций линии

root.overrideredirect(1)

, но ничего не изменилось Вот мой код:

import tkinter as tk
from datetime import datetime
from dateutil import relativedelta
def diff(): #Computes the difference , in days/hours/minutes, between two dates 
    """
    Returns a string
    """


    date_2 = datetime(2020, 5, 4, 8, 00) 


    date_1 = datetime.now()

    #This will find the difference between the two dates
    difference = relativedelta.relativedelta(date_2, date_1)


    months = difference.months
    days = difference.days+months*30
    hours = difference.hours
    minutes = difference.minutes

    text=(str(days)+" jours "+str(hours)+" heures "+str(minutes)+" minutes ")
    return text #string

def update(): #Updating the window
    texte=str(diff())

    l.config(text="Temps restant avant CCP:\n "+texte) #That's the string that needs to update every minute
    root.after(1000, update)



root = tk.Tk()
root.overrideredirect(1)
root.wm_attributes("-topmost", 1) #This should make my window appear above everything
root.geometry("{0}x{1}+1300+1040".format(300, 40))
root.resizable(width=False, height=False) #Removing it doesn't change my problem
root['bg']="#d5dadc" #So that the background of the window matches my taskbar's color

l = tk.Label(text='Init...',bg="#d5dadc")
l.pack()

root.after(1000, update) #starts updating after 1 minute

root.mainloop()

Извините, если мой ответ уже получен, но все остальные вопросы, которые я нашел, не воспроизводят ту же ситуацию, в которой я нахожусь.

Спасибо за вашу помощь!

Франческо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...