[英]How can I display the current time left in a timer in a label?
我為正在做的項目的一部分制作了計時器。 我已經制作了計時器,但是我希望將計時器中剩余的時間打印到標簽上。 另外,如果這不是預期的,我想暫時在標簽上,然后一秒鍾后它會刪除自己並放置新的剩余時間(我不希望它繼續將時間打印在新行上另一個)。
我發現有一篇帖子幾乎是我想要做的,但是對我來說不起作用,因此我不得不更改一些功能並添加一些新功能。 我不確定為什么它不起作用,但是我希望它有所不同,因為它的預設時間為10秒,我希望它成為用戶的選擇。 鏈接: 使用Python和Tkinter制作倒數計時器嗎?
class Application(Frame):
def createWidgets(self):
# More code here
self.timeLeftLabel = Label(root, text='Time Left: ')
self.timeLeftLabel.pack()
def timeLeft(t):
time.sleep(1)
print(t)
def countdownInGUI():
countdown = Label(root, text=entryInt)
countdown.pack()
entryInt = IntVar()
t = Entry(root, textvariable=entryInt)
t.bind('<Return>', get)
t.pack(pady=5)
我希望剩余的時間將顯示在稱為倒數的標簽中,但是直到計時器結束之前什么都沒有顯示,然后每秒在新行中顯示“ PY_VAR0”(因此,在3行中顯示3秒,在4行中顯示秒等。)
在func countdownInGUI
,您通過Label(root, text=entryInt)
創建了Label
小部件,因此Label(root, text=entryInt)
會嘗試將傳遞的內容轉換為字符串。 您應該做的是將entryInt
設置為textvariable
。
另一方面,您實際上不需要為Entry
小部件設置一個textvariable
您可以通過調用Entry.get()
直接檢索內容。
這是一切都可以根據您的代碼工作的方式:
import tkinter as tk
class Application(tk.Frame):
def __init__(self,master=None,**kwargs):
super().__init__(master,**kwargs)
self.master = master
self.timeLeftLabel = tk.Label(master, text='Time Left: ')
self.timeLeftLabel.pack()
self.entryInt = tk.StringVar()
self.countdown = tk.Label(master, textvariable=self.entryInt)
self.countdown.pack()
self.t = tk.Entry(master)
self.t.bind('<Return>', self.start_countdown)
self.t.pack(pady=5)
def start_countdown(self,event=None):
if self.t.get().isdigit():
self.time_left(int(self.t.get()))
def time_left(self, t):
self.entryInt.set(t)
t-=1
if t>=0:
self.master.after(1000,self.time_left, t)
else:
self.entryInt.set("Boom!")
root = tk.Tk()
frame = Application(root)
frame.pack()
root.mainloop()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.