Tkinter में, उपयोगकर्ता दो बुनियादी टेक्स्ट इनपुट विजेट्स - Text विजेट और Entry विजेट का उपयोग करके टेक्स्ट इनपुट कर सकते हैं। Text विजेट आमतौर पर मल्टीलाइन उपयोगकर्ता इनपुट स्वीकार करने के लिए उपयोग किया जाता है, जबकि Entry विजेट में, उपयोगकर्ता केवल सिंगल-लाइन टेक्स्ट टाइप कर सकता है।
आप इन विजेट्स को कस्टमाइज़ कर सकते हैं और बिल्ट-इन लाइब्रेरी फ़ंक्शन और मेथड्स का उपयोग करके अतिरिक्त कार्यक्षमता जोड़ सकते हैं। Entry विजेट में इनपुट को मान्य करने के लिए, आप register() मेथड का उपयोग कर सकते हैं। यह मेथड एक स्ट्रिंग लौटाता है जिसका उपयोग बाद के चरणों में फ़ंक्शन को कॉल करने के लिए किया जा सकता है।
Entry विजेट में इनपुट को मान्य करने के लिए, validate और validatecommand आर्गुमेंट्स पास करके config(**options) मेथड का उपयोग करें।
validate - यह दर्शाता है कि दिए गए Entry या Text विजेट में इनपुट को मान्य करने के लिए कॉलबैक फ़ंक्शन को कब कॉल किया जाना है। उदाहरण के लिए, "key" वह मान है जो निर्दिष्ट करता है कि जब भी उपयोगकर्ता कुंजी (कीबोर्ड से) दबाता है, तो कॉलबैक फ़ंक्शन को कॉल किया जाएगा। आप अन्य विकल्पों का भी उपयोग कर सकते हैं जैसे focus, focusin, focusout, none, all आदि।
validatecommand - यह उस मान को निर्दिष्ट करता है जो कॉलबैक फ़ंक्शन द्वारा लौटाए गए मान पर निर्भर करता है। validatecommand='f' में मान निर्दिष्ट करने के लिए, आप विभिन्न कॉलबैक सब्स्टीट्यूशन कोड का उपयोग कर सकते हैं जो बताता है कि कॉलबैक फ़ंक्शन द्वारा कैसे और कौन से मान लौटाए जाते हैं।
Entry विजेट में इनपुट को मान्य करने के लिए, आपको कॉलबैक फ़ंक्शन को रजिस्टर करना होगा और कॉलबैक फ़ंक्शन में परिभाषित शर्त की जांच करने वाले आर्गुमेंट्स पास करके Entry विजेट को कॉन्फ़िगर करना होगा।
उदाहरण
अब एक उदाहरण पर विचार करते हैं जहां हम एक Entry विजेट को मान्य करना चाहते हैं ताकि उपयोगकर्ता द्वारा एक विशिष्ट टेक्स्ट को हटाया न जा सके। इसके अतिरिक्त, हम startswith("string") फ़ंक्शन के साथ स्ट्रिंग की जांच करके इसे नॉन-रिमूवेबल बना सकते हैं।
# आवश्यक लाइब्रेरी इम्पोर्ट करें
from tkinter import *
# Tkinter विंडो का इंस्टेंस बनाएं
win = Tk()
win.geometry("700x350")
# टेक्स्ट को नॉन-रिमूवेबल बनाने के लिए फ़ंक्शन परिभाषित करें
def make_non_removable(text):
return text.startswith("Enter your Email Id:")
# एक एंट्री विजेट बनाएं
entry = Entry(win, bg="black", fg="white")
entry.pack(side="top", fill="x")
# एक डिफ़ॉल्ट टेक्स्ट जोड़ें
entry.insert(END, "Enter your Email Id:")
validate_entry = (win.register(make_non_removable), '%P')
entry.config(validate='key', validatecommand=validate_entry)
win.mainloop()
आउटपुट
निष्पादन पर, यह एक डिफ़ॉल्ट नॉन-रिमूवेबल टेक्स्ट "Enter your Email Id:" के साथ एक विंडो में Entry विजेट प्रदर्शित करेगा।
