我試圖在滿足條件時讓標簽顯示 2 秒。用戶應該輸入 3 個欄位,如果他們不輸入,我不希望他們被允許繼續。無論哪種方法,我都無法洗掉這個名為“warnlabel”的標簽。請讓我知道我做錯了什么。
def get_API_KEYS(): #Main function
root = Tk()
"""...other declarations / conditions / window settings ..."""
def Save_KC_Keys(): #Button press triggers this function
if len(UE1_var.get()) == 0 or len(UE2_var.get()) == 0 or len(UE3_var.get()) == 0:
warnlabel = Label(root, text="MUST ENTER ALL 3").grid(row=1, column=3)
#root.forget(Label)
#root.after(1000, root.destroy(warnlabel))
#root.forget(warnlabel)
"""...other conditions..."""
root.mainloop()
我已經嘗試過 .forget / .destroy / .after (我更喜歡 .after 作業),但是在幾乎所有配置中我都會收到一個錯誤,例如:
return getattr(self.tk, attr)
AttributeError: '_tkinter.tkapp' object has no attribute '_name'
root.after(1000, root.destroy(warnlabel))
TypeError: Tk.destroy() takes 1 positional argument but 2 were given
self.tk.call('wm', 'forget', window)
_tkinter.TclError: wrong # args: should be "wm option window ?arg ...?"
uj5u.com熱心網友回復:
嘗試做
root.after(2000, lambda: warnlabel.destroy())
嘗試在沒有 lambda 的情況下使用它。
還有變
warnlabel = Label(root, text="MUST ENTER ALL 3").grid(row=1, column=3)
對此
warnlabel = Label(root, text="MUST ENTER ALL 3")
warnlabel.grid(row=1, column=3)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/369268.html
