如何在Tkinter中使特定文字不可刪除?


在Tkinter中,使用者可以使用兩種基本的文字輸入部件輸入文字——**Text**部件和**Entry**部件。**Text**部件通常用於接受多行使用者輸入,而在**Entry**部件中,使用者只能輸入單行文字。

您可以使用內建庫函式和方法自定義這些部件並新增附加功能。要驗證**Entry**部件中的輸入,可以使用**register()**方法。此方法返回一個字串,該字串可用於在以後的階段呼叫該函式。

要驗證**Entry**部件中的輸入,請使用**config(**options)**方法並傳遞**validate**和**validatecommand**引數。

  • **validate**——它表示何時必須呼叫回撥函式來驗證給定Entry或Text部件中的輸入。例如,**"key"**的值指定每當使用者按下**鍵**(來自鍵盤)時,回撥函式將被呼叫。您也可以使用其他選項,例如**focus、focusin、focusout、none、all**等。

  • **validatecommand**——它指定的值取決於回撥函式返回的值。要在**validatecommand='f'**中指定值,您可以使用各種回撥替換程式碼,這些程式碼說明回撥函式如何以及返回什麼值。

要驗證Entry部件中的輸入,您必須註冊回撥函式,並透過傳遞檢查回撥函式中定義的條件的引數來配置Entry部件。

示例

現在讓我們考慮一個示例,在這個示例中,我們想要驗證一個Entry部件,以便使用者無法刪除特定文字。此外,我們可以透過使用**startswith("string")**函式檢查字串來使其不可刪除。

# Import required libraries
from tkinter import *

# Create an instance of tkinter window
win = Tk()
win.geometry("700x350")

# Define a function to make a text non-removable
def make_non_removable(text):
   return text.startswith("Enter your Email Id:")

# Create an entry widget
entry=Entry(win, bg="black", fg="white")
entry.pack(side="top", fill="x")

# Add a default text
entry.insert(END, "Enter your Email Id:")
validate_entry=(win.register(make_non_removable), '%P')
entry.config(validate='key', validatecommand=validate_entry)

win.mainloop()

輸出

執行後,它將在視窗中顯示一個Entry部件,其中包含不可刪除的預設文字“請輸入您的郵箱ID:”。

更新於:2021年12月22日

174 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.