मैं टिंकर के साथ पायथन में क्लाइंट-सर्वर प्रोग्राम लिख रहा हूं। कनेक्ट किए गए ग्राहकों का ट्रैक रखने के लिए मुझे सर्वर की आवश्यकता है। इसके लिए, मैं क्लाइंट को निकास बटन (कोने में मानक "एक्स") के बाद सर्वर पर एक स्वचालित संदेश भेजना चाहता हूं। जब मैं प्रोग्राम से बाहर निकल रहा हूं तो मुझे कैसे पता चलेगा?इंटरसेप्ट टिंकर "बाहर निकलें" कमांड?
उत्तर
आप अपूर्ण विंडो के wm_protocol विधि का उपयोग करना चाहते हैं। विशेष रूप से, आप WM_DELETE_WINDOW
प्रोटोकॉल में रूचि रखते हैं। यदि आप उस विधि का उपयोग करते हैं, तो यह आपको कॉलबैक पंजीकृत करने की अनुमति देता है जिसे विंडो नष्ट होने पर बुलाया जाता है।
उपयोग:
root.protocol("WM_DELETE_WINDOW", app.on_delete)
इसलिए मैंने इस पंक्ति को जोड़ा: 'root.protocol (" WM_DELETE_WINDOW ", app.on_delete()) 'root.mainloop()' पर मेरी कॉल से ठीक पहले 'लेकिन' on_delete() 'खिड़की * खोला गया है * और जब यह बंद हो जाता है तब बुलाया जा रहा है। क्या मुझसे कुछ गलत हो रही है? – John
@ जॉन: 'प्रोटोकॉल' विधि किसी फ़ंक्शन का संदर्भ लेती है। पिछली संश्लेषण जोड़कर आप 'app.on_delete' को कॉल कर रहे हैं और प्रोटोकॉल हैंडलर को उस विधि का परिणाम पास कर रहे हैं। सही उपयोग 'root.protocol (" WM_DELETE_WINDOW ", app.on_delete)' –
बिल्कुल सही है! धन्यवाद! – John
FWIW: यह भी एक विजेट-विशिष्ट व्यवहार आवंटित करने के लिए संभव है।
यदि आप एक विशिष्ट विजेट नष्ट होने पर कोई कार्रवाई करना चाहते हैं, तो आप नष्ट() विधि को ओवरराइड करने पर विचार कर सकते हैं। निम्नलिखित उदाहरण देखें:
class MyButton(Tkinter.Button):
def destroy(self):
print "Yo!"
Tkinter.Button.destroy(self)
root = Tkinter.Tk()
f = Tkinter.Frame(root)
b1 = MyButton(f, text="Do nothing")
b1.pack()
f.pack()
b2 = Tkinter.Button(root, text="f.destroy", command=f.destroy)
b2.pack()
root.mainloop()
जब बटन 'बी 2' दबाया जाता है, फ्रेम 'म' 'बी 1' और बच्चे के साथ, नष्ट हो जाता है "यो!" मुद्रित है
मैंने उसी उत्तर को this topic पर पोस्ट किया।
मेरे मामले में, निम्न कोड काम नहीं किया:
root.protocol("WM_DELETE_WINDOW", app.on_delete) # doesn't work
हालांकि, यह इस प्रपत्र का उपयोग काम किया:
root.wm_protocol ("WM_DELETE_WINDOW", app.on_delete) # does work
'.protocol' का उपयोग करने के लिए कोई जवाब नहीं है, हालांकि ... स्वीकार्य उत्तर पहले से ही' .wm_protocol' का उपयोग करने के लिए कहा गया है। – ArtOfWarfare
आप अजगर atexit
मॉड्यूल का उपयोग कर सकते हैं।
उदाहरण के लिए:
import atexit
def doSomethingOnExit():
pass
atexit.register(doSomethingOnExit)
की
यह मेरे लिए पूरी तरह से काम किया। अन्य लोग कभी ट्रिगर नहीं हुए। – ArtOfWarfare
- 1. डब्ल्यूपीएफ स्टैंडर्ड कमांड - बाहर निकलें कहां है?
- 2. बाहर निकलें
- 3. जावा: आवेदन बाहर निकलें
- 4. MVVM - बाहर निकलें पुष्टि
- 5. आवेदन बाहर निकलें
- 6. बाहर निकलें सी #
- 7. फॉर लूप के लिए बाहर निकलें - विंडोज कमांड प्रोसेसर (सीएमडी.एक्सईई)
- 8. एक्सकोड 4.5 स्टोरीबोर्ड 'बाहर निकलें'
- 9. EXIT_FAILURE बनाम बाहर निकलें (1)?
- 10. संग्रहीत प्रक्रिया से बाहर निकलें
- 11. आप कैसे इंटरएक्टिव लुआ से बाहर निकलें?
- 12. = स्पेगेटी कोड के लिए बाहर निकलें?
- 13. पूर्ववत वीएस 'परियोजना से बाहर निकलें'?
- 14. रेल: तुरंत प्रस्तुत करें और बाहर निकलें
- 15. थोड़ी देर से बाहर निकलें ... वेंड लूप
- 16. पायथन 3.2 में कैसे बाहर निकलें?
- 17. Powershell Git हुक से बाहर निकलें कोड
- 18. मल्टीथ्रेड प्रोग्राम से कैसे बाहर निकलें?
- 19. पाइथन मल्टीप्रोसेसिंग से बाहर निकलें कैसे?
- 20. एक शून्य विधि से बाहर निकलें?
- 21. एंड्रॉइड पूर्ण स्क्रीन मोड से बाहर निकलें
- 22. स्ट्रिंग सरणी दायरे से बाहर निकलें
- 23. शीर्ष कार्य से कैसे बाहर निकलें?
- 24. रूबी - आईएफ ब्लॉक से बाहर निकलें
- 25. विंडोज फॉर्म ऐप से बाहर निकलें कोड
- 26. PHP - IF ब्लॉक से बाहर निकलें
- 27. कंसोल अनुप्रयोग के लिए "बाहर निकलें"
- 28. टर्मिनल में गिट स्थिति सूची से कैसे बाहर निकलें?
- 29. त्रुटि पर बैच प्रोग्राम से कैसे बाहर निकलें?
- 30. पायथन: विंडोज पर नया कमांड प्रॉम्प्ट प्रारंभ करें और इसके लिए प्रतीक्षा करें/बाहर निकलें
संभव डुप्लिकेट [? मैं Tkinter में विंडो बंद घटना कैसे निपटेंगे] (http://stackoverflow.com/questions/111155/how-do-i-handle- द विंडो-क्लोज-इवेंट-इन-टिंकर) – nbro