में विजेट को साफ़ करने का उचित तरीका PyQt4 का उपयोग करते समय विजेट को साफ़/हटाने के लिए 'सही' या बेवकूफ तरीका क्या है?pyqt
पर विचार करें निम्नलिखित कोड:
choices = ['a', 'b', 'c']
checkboxes = []
layout = QtGui.QVBoxLayout()
dialog = MyDialog()
for c in choices:
checkboxes.append(QtGui.QCheckBox(c)
layout.addWidget(chkbox)
dialog.setLayout(layout)
for c in checkboxes:
c.setParent(None)
c.deleteLater()
c = None
ऊपर कोड setParent()
deleteLater()
का उपयोग करता है, और None
करने के लिए वस्तु की स्थापना। क्या ये सभी आवश्यक हैं?
एक और संभावित परिदृश्य है कि मेरे पास विजेट्स के समूह के साथ एक संवाद है और इन विगेट्स को हटाना और नए जोड़ना चाहते हैं। मैं पुराने विजेट को 'रिसाव' नहीं करना चाहता, लेकिन मुझे यकीन नहीं है कि ऐसा कुछ करने का सही तरीका क्या होगा।
ऐसा लगता है कि deleteLater()
की आवश्यकता नहीं हो सकती है। क्या यह सिर्फ संदर्भ गणना में कमी करता है? यदि ऐसा है, तो केवल वैरिएबल को सेट करने के लिए कोई भी चीज़ नहीं करेगा?
क्या लेआउट में जोड़े जाने वाले सभी ऑब्जेक्ट्स बनाते समय 'पैरेंट' तर्क का उपयोग करना आवश्यक है? मुझे एहसास है कि यह शायद थोड़ा और स्पष्ट है, लेकिन क्या इसकी आवश्यकता है? –
वास्तव में नहीं। यदि आप उन्हें सीधे लेआउट में जोड़ रहे हैं तो लेआउट उन्हें लेआउट के मालिक के बच्चे बना देगा। – jdi
पार्टी के लिए बहुत देर हो चुकी है, लेकिन सोचा कि मैं इसे जोड़ दूंगा - हालांकि यह 'पैरेंट' तर्क का उपयोग करने के लिए _necessary_ नहीं है - यह शायद एक अच्छा विचार है, क्योंकि यह आपके कोड की संरचना को थोड़ा सा बाधित करता है, और दूसरों के लिए यह आसान बनाता है यह देखने के लिए कि इच्छित रोकथाम पदानुक्रम क्या है। – Emmet