<p>好的,这里是我将如何使用你的代码来完成你正在尝试做的事情。在</p>
<p>首先,让我们确保我们有正确的进口。在</p>
<pre><code>from tkinter import *
import datetime
import time
</code></pre>
<p>我创建了这个<code>doNothing()</code>函数作为我当前没有测试的任何命令的占位符。在</p>
^{pr2}$
<p>现在,您使用<code>Clockupdate(time):</code>函数的方式将导致每次单击时钟按钮时都添加标签。所以这可能不是你想要的,因为它只是不断地添加新的标签,而不是替换现有的标签。看看这个函数。我在这里所做的就是<code>.config()</code>文本作为函数的时间参数。请注意,您不需要重新定义时间标签或任何类似的东西,只需使用时间作为变量。在</p>
<pre><code>def Clockupdate(time):
timerefresher.config(text = time)
</code></pre>
<p>我不知道您是否想使用一个类是出于特定的原因,但我认为您应该在这里使用一个函数。也要尽量保持你的报价一致。我知道它们是可互换的,但保持它们的一致性是很好的做法。在</p>
<pre><code>def secondrefesher():
newtime = ""
oldtime = datetime.datetime.now()
a = str(oldtime.hour)
b = str(oldtime.minute)
c = str(oldtime.second)
curtime = (a + ":" + b + ":" + c)
if curtime != newtime:
newtime = curtime
Clockupdate(newtime)
</code></pre>
<p>注意我总是把命令放在按钮配置的末尾。它有助于管理代码,这样您就可以在滚动代码时检查每行的末尾。我还将Pressme的命令改为doNothing,这样我就可以测试代码了。您没有为Presstoshowtextandpic提供代码,因此无法在没有该部分的情况下测试代码。记得在这里提问时使用<a href="https://stackoverflow.com/help/mcve">MCVE</a>。在</p>
<pre><code>root = Tk()
mainlabel = Label(root, text="Hey this is working!")
Pressme = Button(root, text = "Press me!", bg = "red", fg = "white", command = doNothing)
Clock = Button(root, text = "Clock?", bg = "blue", fg = "white", command = secondrefesher)
Photo = PhotoImage(file = "test.png")
ShowPhoto = Label(root, image = Photo)
</code></pre>
<p>在这里,我只创建了一次时间标签,然后您可以调用update函数将文本更改为当前时间。在</p>
<pre><code>timerefresher = Label(root, text = "")
timerefresher.pack()
mainlabel.pack()
Pressme.pack()
Clock.pack()
root.mainloop()
</code></pre>
<p>下面是我认为完成的代码应该是什么样子。在</p>
<pre><code>from tkinter import *
import datetime
import time
def Clockupdate(time):
timerefresher.config(text = time)
def secondrefesher():
newtime = ""
oldtime = datetime.datetime.now()
a = str(oldtime.hour)
b = str(oldtime.minute)
c = str(oldtime.second)
curtime = (a + ":" + b + ":" + c)
if curtime != newtime:
newtime = curtime
Clockupdate(newtime)
root = Tk()
mainlabel = Label(root, text = "Hey this is working!")
Pressme = Button(root, text = "Press me!", bg = "red", fg = "white", command = Presstoshowtextandpic)
Clock = Button(root, text = "Clock?", bg = "blue", fg = "white", command = secondrefesher)
Photo = PhotoImage(file = "test.png")
ShowPhoto = Label(root, image = Photo)
timerefresher = Label(root, text = "")
timerefresher.pack()
mainlabel.pack()
Pressme.pack()
Clock.pack()
root.mainloop()
</code></pre>
<p>编辑:</p>
<p>如果您试图创建一个始终处于活动状态且不需要您单击按钮的时钟,则可以使用<code>.after()</code>。在</p>
<p>看看这个例子。在</p>
<pre><code>from tkinter import *
import datetime
import time
root = Tk()
mainlabel = Label(root, text = "Hey this is working!")
Photo = PhotoImage(file = "test.png")
timerefresher = Label(root, text = "")
timerefresher.pack()
status_time = ""
def tick():
global status_time
time2 = time.strftime("%H:%M:%S")
if time2 != status_time:
status_time = time2
timerefresher.config(text = time2)
timerefresher.after(200, tick)
tick()
mainlabel.pack()
root.mainloop()
</code></pre>