所以我想做一個游戲,我想讓標題有打字機效果我知道打字機效果的代碼只是不知道如何實作它。pitanje_menu 是標簽
ab=StringVar()
a=Label(textvariable=ab)
a.pack()
l=[]
for i in words:
l.append(i)
sleep(0.2)
b=str(l)
b=b.replace("[","")
b=b.replace("]","")
b=b.replace(", ","")
b=b.replace(",","")
b=b.replace("'","")
b=b.replace(" ","")
c=len(b)
ab.set(f"{b[0:c-1]}{i}")
a.update()
pitanje_menu = Label(win, text="the game", bg="black", fg="white", font= ('Open Sans', 100))
pitanje_menu.place(x= "770", y= "240", anchor=CENTER)
da_play = Button(win, text="play", bg="black", fg="white", font= ('Open Sans', 60), borderwidth=0, command=play)
da_play.place(x= "770", y= "490", anchor=CENTER)
uj5u.com熱心網友回復:
tkinter與所有 GUI 框架一樣,是事件驅動的。當您創建這些標簽或采取任何行動時,什么都不會立即完成。所做的只是發送訊息。訊息將位于訊息佇列中,直到您到達mainloop. 主回圈分派和處理所有這些訊息,從而導致采取行動。
因此,在您運行回圈時,螢屏上沒有任何內容。您所做的只是延遲時間,直到設定主視窗。
因此,您需要做的是win.after每 0.2 秒請求一次回呼。在該回呼中,您將添加下一個字符,并請求另一個回呼。你一次做一個。我將創建一個包含要顯示的字母的全域串列。每次呼叫都會消耗一個字母,直到串列為空。
to_be_drawn = []
def callback():
if not to_be_drawn:
return
nxt = to_be_drawn.pop(0)
ab.set( ab.get() nxt )
win.after( 200, callback )
def start_typing(text):
was_empty = not to_be_drawn
text = text.replace('[','').replace(']','').replace(',','')
to_be_drawn.extend( list(text) )
if was_empty:
win.after( 200, callback )
start_typing( "Hello, kitty!" )
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/453977.html
上一篇:如何在螢屏上傳播小部件?
