【问题标题】:Label error in tkinter while exiting window退出窗口时 tkinter 中的标签错误
【发布时间】:2020-10-26 03:45:28
【问题描述】:

我正在尝试通过 python tkinter 制作数字时钟。我的代码是

import tkinter,time

def exiter():
    root.destroy()

root=tkinter.Tk()
root.title("Digital Clock")
root.geometry("340x100")
root.resizable(False,False)
root.protocol("WM_DELETE_WINDOW",exiter)

def time_setter():
    hr=tkinter.Label(root,font=('k',60,'bold'),text=time.strftime("%H:%M:%S"))
    hr.grid(row=0,column=0)

    

while True:
    root.update()
    time_setter()

关闭窗口后出现错误

Traceback (most recent call last):
  File "c:\Users\Tanmay Daga\OneDrive\Documents\Programming\Clock-Tkinter\digital_clock.py", line 20, in <module>
    time_setter()
  File "c:\Users\Tanmay Daga\OneDrive\Documents\Programming\Clock-Tkinter\digital_clock.py", line 13, in time_setter
    hr=tkinter.Label(root,font=('k',60,'bold'),text=time.strftime("%H:%M:%S"))
  File "C:\Program Files\Python39-32\lib\tkinter\__init__.py", line 3145, in __init__
    Widget.__init__(self, master, 'label', cnf, kw)
  File "C:\Program Files\Python39-32\lib\tkinter\__init__.py", line 2569, in __init__
    self.tk.call(
_tkinter.TclError: can't invoke "label" command: application has been destroyed

当窗口关闭时如何中断循环。
我怎么知道窗口何时关闭

【问题讨论】:

    标签: python python-3.x tkinter label clock


    【解决方案1】:
    from tkinter import *
    from time import strftime
    
    def clock_tick():
        string = strftime('%H:%M:%S %p')
        lbl.config(text=string)#set the text
        lbl.after(1000, time)#updater 
        
    root=Tk() 
    lbl = Label(root, font=('calibri', 40, 'bold'),
                background='purple',
                foreground='white')
    lbl.pack(anchor = 'center')
    clock_tick() 
    root.title("Digital Clock")
    root.geometry("340x100")
    root.resizable(False,False)
    root.mainloop() #this is the loop you are looking for instead of the while loop
    

    循环错误。对于 tkinter,有一个更好用的内置循环。如果您使用 root.mainloop() 设置循环,则使用 X 退出它会提供一个干净的退出。这是您尝试做的一个很好的例子 https://www.geeksforgeeks.org/python-create-a-digital-clock-using-tkinter/

    【讨论】:

    • 由于time是内置模块,最好不要使用它作为函数名。
    • 你说得对,我从极客那里为极客提取了大部分内容。我已将其更改为不与内置模块冲突。
    猜你喜欢
    • 2022-11-30
    • 1970-01-01
    • 2017-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    相关资源
    最近更新 更多