2010-02-21 5 views
25

पाइथन में tkinter का उपयोग करते हुए, रूट विंडो बंद करते समय root.destroy() और root.quit() के बीच क्या अंतर है?root.destroy() और root.quit() के बीच क्या अंतर है?

क्या कोई दूसरे को पसंद करता है? क्या कोई संसाधन जारी करता है जो दूसरा नहीं करता है?

+0

http://www.daniweb.com/forums/thread66698.html – Dan

उत्तर

24

"छोड़ें() टीसीएल दुभाषिया को रोकता है। यह ज्यादातर मामलों में है जो आप चाहते हैं, क्योंकि आपका टिंकर-ऐप भी रुक जाएगा। यह एक समस्या हो सकती है, अगर आप अपने ऐप को निष्क्रिय से कॉल करते हैं। निष्क्रिय खुद ही है Tkinker-app, इसलिए यदि आप अपने ऐप में छोड़ने() को कॉल करते हैं और टीसीएल दुभाषिया को समाप्त कर दिया जाता है, तो निष्क्रिय भी समाप्त हो जाएगा (या भ्रमित हो जाएगा)

नष्ट करें() केवल मेनलोप को समाप्त करता है और सभी विजेट हटा देता है। तो ऐसा लगता है यदि आप अपने ऐप को किसी अन्य टिंकर ऐप से कॉल करते हैं, या यदि आपके पास एकाधिक मेनलोप्स हैं तो सुरक्षित रहें। "

http://www.daniweb.com/forums/thread66698.html

+2

यह उत्तर बिल्कुल सही नहीं है। 'root.quit()' टीसीएल दुभाषिया को रोक नहीं है "। यह केवल 'mainloop' से बाहर निकलने का कारण बनता है। दुभाषिया अभी भी बरकरार है, जैसा कि सभी विजेट हैं। कॉलिंग 'root.destroy()' सभी विजेट्स को नष्ट कर देगा _and_ exit 'mainloop'। –

10

root.quit() कारणों से लिया बाहर निकलने के लिए mainloop। दुभाषिया अभी भी बरकरार है, जैसा कि सभी विजेट हैं। यदि आप इस फ़ंक्शन को कॉल करते हैं, तो आपके पास कोड हो सकता है जो कॉल के बाद root.mainloop() पर निष्पादित हो सकता है, और वह कोड विगेट्स के साथ इंटरैक्ट कर सकता है (उदाहरण के लिए, एंट्री विजेट से एक मान प्राप्त करें)।

कॉलिंग root.destroy() सभी विजेट को नष्ट कर देगा और मेनलोप से बाहर निकल जाएगा। root.mainloop() पर कॉल के बाद कोई भी कोड चलाएगा, लेकिन किसी भी विजेट तक पहुंचने का कोई भी प्रयास (उदाहरण के लिए, एंट्री विजेट से एक मान प्राप्त करें) विफल हो जाएगा क्योंकि विजेट अब मौजूद नहीं है।

संबंधित मुद्दे