第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何停止等待 tkinter 對(duì)話(huà)框中的輸入?

如何停止等待 tkinter 對(duì)話(huà)框中的輸入?

LEATH 2023-07-27 16:09:48
我目前正在編寫(xiě)一個(gè)程序,該程序?qū)?zhí)行某些操作(例如不斷計(jì)數(shù)),直到將某些內(nèi)容輸入到顯示的對(duì)話(huà)框中。但是,每當(dāng)我嘗試這樣做時(shí),程序都會(huì)在等待輸入時(shí)凍結(jié),因此在我嘗試在后臺(tái)運(yùn)行的計(jì)數(shù)過(guò)程中不會(huì)取得任何進(jìn)展。有沒(méi)有辦法讓計(jì)時(shí)器在后臺(tái)連續(xù)運(yùn)行,以便在 5 分鐘內(nèi),計(jì)數(shù)器立即停止并且對(duì)話(huà)框消失?這是我的代碼的基本框架。我使用 tkinter 對(duì)話(huà)框進(jìn)行輸入,并嘗試創(chuàng)建一個(gè)在后臺(tái)運(yùn)行的計(jì)時(shí)器。from time import *from tkinter import *from tkinter import messageboxfrom tkinter import simpledialogwhile timer<300:    sleep(1)    timer += 1    ROOT = Tk()    ROOT.withdraw()    USER_INP = simpledialog.askstring(title="Code Required",                                      prompt="What's the Code?:")最好沒(méi)有外部模塊,但如果沒(méi)有也沒(méi)關(guān)系。提前致謝 :)這是請(qǐng)求的代碼  from tkinter import *  from tkinter import simpledialog  root = Tk()  root.withdraw()  def ask():      simpledialog.askstring(title="Code Required",                                        prompt="What's the Code?:")  ##    root.after(5000, root.destroy()) #added in the root.after() to try        and terminate it after set time  root.after(3000,ask) #triggers ask() after 3000 ms(3 seconds)  root.after(100000, root.destroy()) # tried to wait 10 seconds before it breaks but this doesn't show the dialog box any more  root.mainloop()
查看完整描述

1 回答

?
湖上湖

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊

下面是 tkinter 的基本代碼,它使對(duì)話(huà)框在 5 秒后彈出。


from tkinter import *

from tkinter import simpledialog


root = Tk()

root.withdraw()


def ask():

? ? simpledialog.askstring(title="Code Required",

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? prompt="What's the Code?:")

? ? root.after(5000, root.destroy) #added in the root.after() to try and terminate it after set time


root.after(3000,ask) #triggers ask() after 3000 ms(3 seconds)

#root.after(10000, root.destroy) # tried to wait 10 seconds before it breaks but this doesn't show the dialog box any more

root.mainloop()

這里after()在給定時(shí)間后觸發(fā)一個(gè)函數(shù),即 3000 毫秒(3 秒),因此您也可以調(diào)整計(jì)時(shí)器。這只是一個(gè)示例,您可以根據(jù)需要進(jìn)行更多編輯。

為什么使用after()而不是while和計(jì)時(shí)器?

這是因?yàn)?code>while循環(huán)干擾了 tkintermainloop()導(dǎo)致窗口無(wú)響應(yīng),所以不建議使用whileor?time.sleep()。after()相反,您也可以使用tkinter 的內(nèi)置方法threading。

這里有更多內(nèi)容after()

  • 它主要需要兩個(gè)位置參數(shù),ms并且func

  • ms- 這是指定函數(shù)被觸發(fā)的時(shí)間(以毫秒為單位)。

  • func- 指定完成后觸發(fā)的函數(shù)ms。

警告:?請(qǐng)記住,根窗口不會(huì)被破壞,它只是被隱藏,因此只要根窗口沒(méi)有被破壞,程序就會(huì)繼續(xù)在后臺(tái)運(yùn)行,因此您必須恢復(fù)該窗口并將其關(guān)閉任務(wù)結(jié)束。出于這個(gè)原因,我root.destroy()在那里添加了。

查看完整回答
反對(duì) 回復(fù) 2023-07-27
  • 1 回答
  • 0 關(guān)注
  • 184 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)