簡體   English   中英

如何在標簽中顯示計時器剩余的當前時間?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM