Как создать истинное время l oop при сохранении открытой страницы tkinter? - PullRequest
0 голосов
/ 13 марта 2020

Я пытаюсь создать страницу tkinter, которая показывает время, и оно должно постоянно обновляться. Я попытался:

from tkinter.font import *
import time
def SetTime():
    global time_date
    time_date = time.strftime("%H:%M")
    InfoTime.set(time_date)
Main = Tk()
Main.geometry("1600x1200")
Main.title("Time")
FontStyle = Font(family = "Times New Roman", size = 48)
InfoTime = StringVar()
TitleText = Label(Main,textvariable = InfoTime,font = FontStyle).pack()
while True:
    SetTime()

Однако, запуск строки While True: и постоянный запуск SetTime() по некоторым причинам препятствуют открытию страницы tkinter (Main). Это было проблемой для многих моих проектов tkinter.

Обратите внимание, я запускаю python 3.7.2 в режиме IDLE. Спасибо.

1 Ответ

1 голос
/ 13 марта 2020

Это должно сделать это:

from tkinter import *
from tkinter.font import *
import time

Main = Tk()
Main.geometry("1600x1200")
Main.title("Time")

FontStyle = Font(family = "Times New Roman", size = 48)
TitleText = Label(Main, font = FontStyle)
TitleText.pack()

time_date1 = ''

def SetTime():
    global time_date1
    global TitleText

    # Gets current time
    time_date2 = time.strftime("%H:%M")
    # If time has changed, update it
    if time_date2 != time_date1:
        time_date1 = time_date2
        TitleText.config(text=time_date2)

    # Repeats function every 200 milliseconds 
    TitleText.after(200, SetTime)

SetTime()
Main.mainloop()

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

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