Python GUI Programming

Tkinter बटन कमांड में आर्ग्यूमेंट्स पास करना

Spread the love

Tkinter का Button विजेट क्रियाओं को ट्रिगर करने का एक सरल तरीका प्रदान करता है, लेकिन अक्सर आपको बटन द्वारा निष्पादित फ़ंक्शन में डेटा पास करने की आवश्यकता होगी। यह लेख इसे प्राप्त करने के लिए दो प्रभावी तकनीकों का पता लगाता है: functools.partial और लैम्ब्डा फ़ंक्शंस का उपयोग करना।

विषयवस्तु की तालिका

functools.partial के साथ तर्क पास करना

functools.partial फ़ंक्शन कॉल करने योग्य के पूर्व-भरे तर्कों के लिए एक स्वच्छ और पठनीय समाधान प्रदान करता है। यह विशेष रूप से फायदेमंद है जब आप कई फ़ंक्शन बनाने से बचना चाहते हैं जो केवल अपने तर्कों में भिन्न होते हैं।

एक फ़ंक्शन पर विचार करें जो एक व्यक्तिगत अभिवादन प्रदर्शित करता है:


import tkinter as tk
from functools import partial

def greet(name, message):
    print(f"Hello, {name}! {message}")

root = tk.Tk()

# partial का उपयोग करके बटन बनाएँ
button1 = tk.Button(root, text="Greet Alice", command=partial(greet, "Alice", "Welcome!"))
button1.pack()

button2 = tk.Button(root, text="Greet Bob", command=partial(greet, "Bob", "How are you doing?"))
button2.pack()

root.mainloop()

यहाँ, partial(greet, "Alice", "Welcome!") एक नया कॉल करने योग्य बनाता है जो, निष्पादित होने पर, पूर्व-भरे तर्कों के रूप में “Alice” और “Welcome!” के साथ greet को कॉल करता है। यह बटन निर्माण को सरल करता है और कोड की पठनीयता में सुधार करता है।

लैम्ब्डा फ़ंक्शंस के साथ तर्क पास करना

लैम्ब्डा फ़ंक्शन, या अनाम फ़ंक्शन, एक अधिक संक्षिप्त विकल्प प्रदान करते हैं। हालाँकि, जटिल तर्क के लिए, वे पठनीयता को कम कर सकते हैं।

आइए लैम्ब्डा फ़ंक्शंस का उपयोग करके अभिवादन उदाहरण पर फिर से विचार करें:


import tkinter as tk

def greet(name, message):
    print(f"Hello, {name}! {message}")

root = tk.Tk()

button1 = tk.Button(root, text="Greet Alice", command=lambda: greet("Alice", "Welcome!"))
button1.pack()

button2 = tk.Button(root, text="Greet Bob", command=lambda: greet("Bob", "How are you doing?"))
button2.pack()

root.mainloop()

lambda: greet("Alice", "Welcome!") एक अनाम फ़ंक्शन बनाता है जो निर्दिष्ट तर्कों के साथ सीधे greet को कॉल करता है। जबकि संक्षिप्त, यह दृष्टिकोण लैम्ब्डा फ़ंक्शन की जटिलता बढ़ने पर कम रखरखाव योग्य हो सकता है।

सही विधि चुनना

functools.partial और लैम्ब्डा फ़ंक्शन दोनों प्रभावी रूप से Tkinter बटन कमांड में तर्क पास करते हैं। functools.partial आम तौर पर बेहतर पठनीयता प्रदान करता है, खासकर सरल परिदृश्यों में। लैम्ब्डा फ़ंक्शन संक्षिप्तता प्रदान करते हैं लेकिन अधिक जटिल स्थितियों में पठनीयता से समझौता कर सकते हैं। उपयुक्त विधि का चयन करते समय कोड की स्पष्टता और रखरखाव को प्राथमिकता दें। सरल तर्क पासिंग के लिए, functools.partial को अक्सर प्राथमिकता दी जाती है।

प्रातिक्रिया दे

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *