我有這個簡單的程式只是為了我的理解,當我按“0”進入“def func”時,它應該將按鈕的背景更改為紅色,然后等待 3 秒并列印“hello”,但是當我運行它,我按“0”,程式先休眠3秒,然后改變背景,然后列印“你好”,為什么?它應該首先更改背景,然后執行其他行。您可以嘗試復制我的代碼:
import time
from tkinter import *
window = Tk()
window.geometry("500x300")
def func(event):
button.configure(bg="Red")
time.sleep(3)
print("hello")
button= Button(window,text= "Hello", font= ('Helvetica 20 '),width=5,height=1,bg="#008BC7")
window.bind("0", func)
button.pack()
uj5u.com熱心網友回復:
問:為什么會發生這一切?
A. 因為所有的變化都發生在函式退出之后。
試試這個:你可以檢查回圈后按鈕更改的背景和執行的最后一行,而不是在這里time.sleep(3)寫
。for a in range(10000): print(a)print('hello')
time.sleep()使用庫時不要使用,tkinter因為這里有一個方法 call Tk().after(timeInMillisecond,function)。
Tk().after()方法不會停止程式運行它會在下面的給定時間后執行該函式我使用該lambda函式而不是普通函式。
import time
from tkinter import *
window = Tk()
window.geometry("500x300")
def func(event):
button.configure(bg="Red")
window.after(3000,lambda:print('hello'))# edited
button= Button(window,text= "Hello", font= ('Helvetica 20 '),width=5,height=1,bg="#008BC7")
window.bind("0", func)
button.pack()
window.mainloop()
除了lambda函式,你也可以在這里使用普通函式。
import time
from tkinter import *
window = Tk()
window.geometry("500x300")
def print_hello():
print('hello')
def func(event):
button.configure(bg="Red")
window.after(3000,print_hello) # edited
button= Button(window,text= "Hello", font= ('Helvetica 20 '),width=5,height=1,bg="#008BC7")
window.bind("0", func)
button.pack()
window.mainloop()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/462090.html
