如何创建while true循环,同时仍保持tkinter页面打开?

问题描述 投票:0回答:1

我正在尝试创建一个显示时间的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页面(主要)打开。这对我的许多tkinter项目都是一个问题。

[请注意,我在IDLE中运行python 3.7.2。谢谢。

loops tkinter python-3.7 python-idle
1个回答
0
投票

这应该做:

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()

评论几乎可以解释所有内容。我还清理并重新格式化了您的代码,使其看起来更好。

© www.soinside.com 2019 - 2024. All rights reserved.