[英]How to make a Label appear then disappear after a certain amount of time in python tkinter
我想要一個買不起的標簽出現,然后在我按下按鈕購買東西時一秒消失。 似乎 time.sleep(1) 使它無法正常工作。 這是在 python tkinter 上完成的。
def buttonpressed():
Label.place(x = 500, y = 500 #where i want the label to appear
time.sleep(1)
Label.place(x = 10000, y = 10000) #moving it away where i wont be able to see it
你不能使用sleep
因為它會停止mainloop
您可以使用root.after(time_in_milliseconds, function_name)
來運行函數
例子
import tkinter as tk
def button_pressed():
# put text
label['text'] = "Hello World!"
# run clear_label after 2000ms (2s)
root.after(2000, clear_label)
def clear_label():
# remove text
label['text'] = ""
root = tk.Tk()
label = tk.Label(root) # empty label for text
label.pack()
button = tk.Button(root, text="Press Button", command=button_pressed)
button.pack()
root.mainloop()
如果您必須創建和刪除標簽,請使用label.destroy()
import tkinter as tk
def button_pressed():
label = tk.Label(root, text="Hello World!")
label.pack()
root.after(2000, destroy_widget, label) # label as argument for destroy_widget
def destroy_widget(widget):
widget.destroy()
root = tk.Tk()
button = tk.Button(root, text="Press Button", command=button_pressed)
button.pack()
root.mainloop()
和沒有destroy_widget
較短版本
import tkinter as tk
def button_pressed():
label = tk.Label(root, text="Hello World!")
label.pack()
root.after(2000, label.destroy)
root = tk.Tk()
button = tk.Button(root, text="Press Button", command=button_pressed)
button.pack()
root.mainloop()
多次按下按鈕可看到許多標簽在 2 秒后消失。
您可以使用after()
在指定的時間間隔后設置回調。 在回調函數中,使用pack_forget()
(或grid_forget()
如果您正在使用網格)清除標簽。 這比將標簽的文本屬性設置為空字符串要好,因為這會導致調整小部件的大小,這可能不是您想要的。 下面是一個例子:
import Tkinter as tk
class App():
def __init__(self):
self.root = tk.Tk()
self.label = tk.Label(text='I am a label')
self.label.place(x=0, y=0)
self.label.after(1000, self.clear_label) # 1000ms
self.root.mainloop()
def clear_label(self):
print "clear_label"
self.label.place_forget()
app=App()
另一種選擇是使用self.label.destroy()
來銷毀小部件,但是, pack_forget()
允許您通過再次調用小部件上的pack()
來再次顯示標簽。
# I made it through calling 2 functions:
from tkinter import *
root = Tk()
root.geometry('400x200') # width by height
def one_text():
label['text'] = "Look around"
root.after(1000, another_text)
def another_text():
label['text'] = "and smile"
root.after(1000, one_text)
label= Label(root ,font=('Helvetica', 14), fg='black', bg='white')
label.pack()
one_text()
root.mainloop()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.