为什么Tkinter不显示基本计数器?

时间:2018-03-07 13:39:56

标签: python tkinter

我正在学习有关Python和Tkinter的基础知识,我正在关注this tutorial

问题是,该教程的最后一个练习是

import tkinter as tk

counter = 0

def counter_label(label):
    def count():
        global counter
        counter += 1
        label.config(text=str(counter))
        label.after(1000,count)
    count()


root = tk.Tk()
root.title ("Counting")
label = tk.Label(root, fg = "green")
label.pack()
button = tk.Button(root, text='Stop', width=25, command=root.destroy)
button.pack()
root.mainloop()

我遇到的问题是应用程序中没有显示数字,尽管应用程序和停止按钮工作正常。我一直在寻找答案,但我没有找到答案。

提前致谢!

2 个答案:

答案 0 :(得分:1)

只需在counter_label(label)之前添加root.mainloop()即可。它应该按预期工作。

请记住,为了使函数正常工作,您需要在代码中的某个位置调用该函数。只是拥有该函数而不调用它将导致很多东西。

这一行:

label.config(text=str(counter))

不需要str()部分。您可以将其删除,然后离开counter

像这样:

label.config(text=counter)

Tkinter标签可以带一个字符串或一个int。这不是问题。

此外,如果您在计数功能中将label.config(text=str(counter))移到counter += 1以上,则计数器将从零开始,而不是1。

答案 1 :(得分:1)

  

"为什么Tkinter不显示基本计数器?"

显示计数器(如果它指的是计数器应该增加的label),那只是{{1}因为没有更新它,所以显示一个空字符串。添加:

label

看到标签确实存在。

作为Carcigenicate points out,您永远不会调用该函数来实际修改标签。假设您需要一秒钟的计时器,请在label['text'] = 0 之前添加上下行:

root.mainloop()