簡體   English   中英

Widget.destroy() 在 tkinter python 中不起作用

[英]Widget.destroy() doesn't work in tkinter python

當用戶注冊時,我確保沒有必填字段為空,即沒有任何條目小部件為空。 當給出空輸入字段時,我在窗口上放置了一個標簽 l1。 現在,當用戶在輸入所有信息后再次單擊按鈕時,我想從窗口中刪除此標簽。 我編寫了以下代碼。

                l1_info = {}
                def sign_up_now():

                    global l1_info

                    l1 = Label(myFrame5, text="*Required field(s)\nempty.", font=("Helvetica 18 bold", 13),
                               padx=20, pady=4, bd=1, relief="groove", fg="#FF0000")

                    if user_password.index("end") == 0 or user_first_name.index("end") == 0 or user_last_name.index\
                            ("end") == 0:
                        l1.grid(row=8, column=0, columnspan=2, pady=5, padx=3, sticky="W")
                        l1_info = l1.grid_info()
                    else:
                        if l1_info != {}:
                            if l1_info["row"] == 8:
                                l1.destroy()
                            else:
                                print("Not present.")

l1_info 是一個全局變量,每次調用函數時它的先前值都會保留。 雖然我已經檢查了 if 條件中的條件是否為真(l1_info["row"] == 8),但 l1 標簽仍然沒有被破壞。 為什么不破壞?

為什么不破壞?

每次調用sign_up_now時,您都在創建一個新標簽。 因此,第一次通過時,如果其中一個字段為空,您將創建一個標簽。 除非您通過導致標簽被銷毀的邏輯,否則標簽不會被銷毀。 此時您有一個標簽。

現在,用戶輸入一些數據並單擊按鈕。 您要做的第一件事是創建另一個標簽。 如果他們輸入了所有數據,則第二個標簽將被銷毀,但第一個標簽將繼續存在。 如果它們不滿足所有條件,您現在有兩個標簽。 當用戶再次單擊按鈕時,您創建了一個標簽,現在有三個。 等等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM