Скрыть окно tk и отображать только окно сообщения

Как отобразить только окно сообщения и скрыть модальное окно tk? Было бы здорово, если бы кто-то мог изменить это ниже.

import time
import Tkinter as tk
import tkMessageBox

root = tk.Tk()
root.withdraw

def timer(hours):
    seconds = hours * 60
    start = time.time()

    elapsed = 0
    while elapsed < seconds:

        time.sleep(0.0010)
        elapsed = time.time() - start

    elapsed = elapsed//60

    tkMessageBox.showinfo("Done", "Done Today" +str(elapsed) + " Hrs")

timer(1)

person Jake    schedule 07.07.2016    source источник
comment
В качестве примечания избегайте использования time.sleep() в программе графического интерфейса - это предотвратит обновление графического интерфейса, то есть он не сможет отображать каждый тик, поскольку цикл Tcl не получит управление. Вместо этого пусть ваша функция вызывает сама себя after в течение заданного периода времени с помощью root.after([milliseconds],[function]) вызова. Это позволит Tcl/Tk обновить графический интерфейс, а также не заморозит все (например, с sleep ваши кнопки ничего не будут делать, пока основной цикл не получит управление)   -  person Delioth    schedule 07.07.2016


Ответы (2)


Вы можете использовать этот метод.

import time
import Tkinter as tk

root = tk.Tk()
root.withdraw

def timer(hours):
    seconds = hours * 60
    start = time.time()

    elapsed = 0
    while elapsed < seconds:

        time.sleep(0.0010)
        elapsed = time.time() - start

    elapsed = elapsed//60

    #tkMessageBox.showinfo("Done", "Done Today" +str(elapsed) + " Hrs")
    root.title("Done")
    label = tk.Label(root, text= "Done Today " +str(elapsed) + " Hrs" )
    label.pack(side="top", fill="both", expand=True, padx=20, pady=20)
    button = tk.Button(root, text="OK", command=lambda: root.destroy())
    button.pack(side="bottom", fill="none", expand=True)
    root.mainloop()

timer(1)
person dazzieta    schedule 07.07.2016
comment
Ранее я использовал это, найденное в другом посте здесь. Но это выглядит странно со значками свертывания, развертывания и закрытия в углу диалогового окна. - person Jake; 08.07.2016

ну у тебя почти получилось...

root = tk.Tk()
root.withdraw()
timer(.1)
root.mainloop()
person Eular    schedule 07.07.2016
comment
это убивает мой реальный сон, если я настраиваю на 1 минуту, это занимает больше минуты. - person Jake; 08.07.2016