Tkinter, Python का अंतर्निहित GUI टूलकिट, इंटरैक्टिव डेस्कटॉप एप्लीकेशन बनाने को आसान बनाता है। एक सामान्य कार्य उपयोगकर्ता क्रियाओं, जैसे बटन क्लिक करने के जवाब में नई विंडोज़ खोलना है। यह लेख प्रभावी ढंग से इन नई विंडोज़ को बनाने और प्रबंधित करने के तरीके का विवरण देता है, जिसमें विभिन्न परिदृश्य और सर्वोत्तम अभ्यास शामिल हैं।
विषयवस्तु की तालिका
- मुख्य विंडो और बटन बनाना
- नई विंडोज़ को कस्टमाइज़ करना
- कई विंडोज़ का प्रबंधन
- उन्नत तकनीकें: मोडैलिटी और डेटा ट्रांसफर
- निष्कर्ष
मुख्य विंडो और बटन बनाना
आइए Tkinter को इम्पोर्ट करके और एक बुनियादी मुख्य विंडो बनाकर शुरू करते हैं जिसमें एक बटन है जो एक नई विंडो के निर्माण को ट्रिगर करता है:
import tkinter as tk
def create_new_window():
new_window = tk.Toplevel(root)
new_window.title("नई विंडो")
new_window.geometry("300x200")
root = tk.Tk()
root.title("मुख्य एप्लीकेशन")
button = tk.Button(root, text="नई विंडो खोलें", command=create_new_window)
button.pack(pady=20)
root.mainloop()
यह कोड एक फ़ंक्शन create_new_window
को परिभाषित करता है जो एक नई टॉप-लेवल विंडो बनाने के लिए tk.Toplevel(root)
का उपयोग करता है। root
तर्क सुनिश्चित करता है कि नई विंडो मुख्य एप्लीकेशन से जुड़ी हुई है। geometry
इसके आयाम निर्धारित करता है। बटन का command
एट्रिब्यूट इसे इस फ़ंक्शन से जोड़ता है। root.mainloop()
Tkinter इवेंट लूप शुरू करता है।
नई विंडोज़ को कस्टमाइज़ करना
नई विंडो, एक मानक Tkinter विंडो होने के नाते, बड़े पैमाने पर कस्टमाइज़ की जा सकती है। वांछित इंटरफ़ेस बनाने के लिए लेबल, एंट्री फ़ील्ड या कोई अन्य विजेट जोड़ें:
import tkinter as tk
def create_new_window():
new_window = tk.Toplevel(root)
new_window.title("नई विंडो")
new_window.geometry("300x200")
label = tk.Label(new_window, text="यह एक कस्टमाइज़्ड विंडो है!")
label.pack(pady=20)
entry = tk.Entry(new_window)
entry.pack(pady=10)
# ... (पिछले उदाहरण से बाकी कोड)
यह उन्नत उदाहरण एक लेबल और एक एंट्री फ़ील्ड जोड़ता है। अधिक परिष्कृत लेआउट के लिए, विजेट प्लेसमेंट पर बेहतर नियंत्रण के लिए .pack()
के बजाय .grid()
या .place()
का उपयोग करने पर विचार करें।
कई विंडोज़ का प्रबंधन
कई विंडोज़ से निपटते समय, उन पर नज़र रखना महत्वपूर्ण हो जाता है। एक साधारण सूची प्रत्येक विंडो के संदर्भों को संग्रहीत कर सकती है:
import tkinter as tk
windows = []
def create_new_window():
new_window = tk.Toplevel(root)
new_window.title(f"नई विंडो {len(windows) + 1}")
new_window.geometry("300x200")
windows.append(new_window)
new_window.protocol("WM_DELETE_WINDOW", lambda: close_window(new_window))
def close_window(window):
windows.remove(window)
window.destroy()
# ... (बाकी कोड)
windows
सूची प्रत्येक नई विंडो को संग्रहीत करती है। शीर्षक अब विंडो संख्या प्रदर्शित करता है। close_window
फ़ंक्शन सुरक्षित रूप से सूची से विंडो को हटा देता है और उसे नष्ट कर देता है। protocol
विधि विंडो बंद होने पर उचित सफाई सुनिश्चित करती है।
उन्नत तकनीकें: मोडैलिटी और डेटा ट्रांसफर
मोडैलिटी: मोडल डायलॉग (विंडो जो बंद होने तक मुख्य एप्लिकेशन के साथ इंटरैक्शन को ब्लॉक करती हैं) बनाने के लिए, root
पर transient
विकल्प सेट के साथ tk.Toplevel
का उपयोग करें और यह सुनिश्चित करने के लिए डायलॉग पर grab_set()
का उपयोग करने पर विचार करें कि यह एकमात्र फ़ोकस योग्य विंडो है।
डेटा ट्रांसफर: विंडोज़ के बीच डेटा एक्सचेंज विभिन्न तरीकों से किया जा सकता है:
- ग्लोबल वेरिएबल: सरल, लेकिन बड़े एप्लिकेशन में समस्याएँ पैदा कर सकता है।
- फ़ंक्शन आर्गुमेंट: डेटा को सीधे नई विंडो के निर्माण फ़ंक्शन में पास करें।
- Tkinter वेरिएबल: कुशल डेटा बाइंडिंग और अपडेट के लिए
StringVar
,IntVar
, आदि का उपयोग करें।
निष्कर्ष
Tkinter में नई विंडोज़ बनाना और प्रबंधित करना tk.Toplevel
के साथ प्रबंधनीय है। कई विंडोज़ को संभालने और डेटा को स्थानांतरित करने के लिए प्रभावी तकनीकें एप्लिकेशन संगठन और रखरखाव में सुधार करती हैं। उपयुक्त लेआउट मैनेजर (.grid()
, .place()
) का उपयोग करना याद रखें और विशिष्ट इंटरैक्शन के लिए मोडल डायलॉग का उपयोग करने पर विचार करें। अपनी एप्लिकेशन की आवश्यकताओं के अनुसार प्रयोग करें और अपने दृष्टिकोण को तैयार करें।