मेरे पास QGroupBox
विजेट है जिसमें बच्चों को मैं निकालना चाहता हूं। मैं उसको कैसे करू? मुझे कोई removeWidget
, removeChild
, removeItem
, या the docs में समान कुछ भी नहीं मिला। मैं केवल एक लेआउट से चीजों को हटाने के लिए देख सकता हूं, लेकिन जाहिर है, इसे वास्तविक विजेट से नहीं हटाता है।pyqt: विजेट को कैसे निकालें?
उत्तर
खैर, यह काम करता है: विजेट मैं निकालना चाहते हैं पर, widget.setParent(None)
कहते हैं। मुझे लगता है कि एक लेआउट में जोड़ने से कंटेनर में विजेट जोड़ा जाता है, लेकिन लेआउट से निकालना ... मजेदार सामान नहीं है। अपने विजेट कोई भी बच्चा विगेट्स उस पर आधारित है, तो
वैसे भी कोई मुद्दा नहीं होना चाहिए, आपको समझना होगा कि विजेट किसी भी तरह से बनाया गया है, भले ही आप इसे लेआउट में रखें या नहीं, और उसके माता-पिता हैं। एक लेआउट स्क्रीन पर इसे व्यवस्थित करने के लिए ज़िम्मेदार है, यह –
विजेट दिखाने और छिपाने के लिए एक विश्वसनीय या यहां तक कि उपयोग करने योग्य विधि नहीं है, मुझे विजेट को जोड़ने या निकालने का कोई तरीका नहीं दिख रहा है (कोई भी जोड़ें/निकालें विजेट फ़ंक्शन) लेआउट। एक लेआउट में विजेट जोड़ना इसे प्रदर्शित करने के लिए प्रतीत होता है (यह वास्तव में क्या करता है विजेट के पैरेंट को लेआउट के कंटेनर पर सेट करता है)। मैं उम्मीद करता हूं कि उसी लेआउट से उसी विजेट को हटाने से यह प्रदर्शित नहीं होगा (यानी इसे उसी स्थिति में वापस रख दें जैसा कि मैंने इसे लेआउट में जोड़ा था)। लेकिन ऐसा करने का एकमात्र तरीका विजेट के माता-पिता को किसी को भी सेट करना प्रतीत नहीं होता है ... जो बिल्कुल सममित नहीं है। – Claudiu
अच्छी तरह से, आप माता-पिता की 'removeChild' विधि का उपयोग कर सकते हैं, लेकिन –
क्या आप वाकई विजेट को हटाना चाहते हैं? hide
नहीं होगा? आईएमएचओ स्वीकृत विधि show
/hide
का उपयोग कर विजेट को प्रकट करने और उपयोगकर्ता के दृश्य से गायब होने के लिए उपयोग कर रही है।
एक वैकल्पिक उपयोग कर रहा है QStackedWidget
हाँ; [यहां देखें] (http://stackoverflow.com/questions/5889705/pyqt-how-to-remove-elements-from-a-qvboxlayout/5890555#5890555)। हालांकि मुझे लगता है कि छुपा भी – Claudiu
@ क्लाइडिउ काम कर सकता है: यदि आप यही चाहते हैं, तो मुझे लगता है कि उत्तर आपको समाधान देता है –
@Eli: उत्तर मुझे नहीं बताता कि वास्तव में माता-पिता से विजेट को कैसे हटाया जाए, जो मैं हूं यहाँ पूछ रहा था। – Claudiu
मुझे लगता है कि आप का उपयोग कर सकते हैं:
layout.removeWidget(self.widget_name)
self.widget_name.deleteLater()
self.widget_name = None
मेरी परीक्षणों में
जब यह एक विजेट है कि करने के लिए बच्चे की आपके पास है:
import sip
layout.removeWidget(self.widget_name)
sip.delete(self.widget_name)
self.widget_name = None
यदि आपके पास कक्षा या वैश्विक स्तर पर विजेट के लिए एक चर नाम नहीं है, तो भी आप लेआउट.takeAt (अनुक्रमणिका) के साथ लेआउट से हटा सकते हैं और QLayoutItem से विजेट पॉइंटर प्राप्त कर सकते हैं यह फ़ंक्शन QLayoutItem.widget() विधि के साथ आता है उस स्थिति में आपको कोई भी वैरिएबल नाम असाइन करने की आवश्यकता नहीं है क्योंकि यह नहीं है आपके समारोह के बाहर संदर्भित।
दोनों विधियों को आज़माएं और देखें कि आपके लिए क्या काम करता है (समय के अच्छे समूह को दोहराने के बाद स्मृति को रिसाव न करें)।
- 1. PyQt
- 2. pyqt
- 3. pyqt
- 4. PyQt
- 5. PyQt
- 6. PyQt
- 7. PySide/PyQt में स्क्रीन के केंद्र में विजेट कैसे बनाएं?
- 8. PyQt
- 9. PyQt
- 10. एंड्रॉइड में ऐप अनइंस्टॉल होने पर विजेट को कैसे निकालें?
- 11. Pyqt
- 12. PyQT
- 13. qtablewidget pyqt
- 14. PyQt
- 15. PyQt
- 16. PyQt
- 17. PyQt
- 18. अजगर या PyQt
- 19. गतिशील QGridLayout को अपडेट करना - पायथन PyQt
- 20. PyQt प्रलेखन
- 21. QIcon.fromTheme PyQt
- 22. PySide/PyQt
- 23. PyQt IOError
- 24. पीईक्यूटी विजेट
- 25. Autoscroll PyQT QTextWidget
- 26. कार्रवाई को कैसे निकालें NetBeans
- 27. फ्लास्क: कुकीज को कैसे निकालें?
- 28. मल्टीप्रोसेसिंग समस्या [pyqt, py2exe]
- 29. PyQt में QTreeWidgetItem हटाएं?
- 30. Ctrl-C PyQt
क्या आप QGroupBox से विजेट को _just_ को हटाने के लिए देख रहे हैं, या आप विजेट को पूरी तरह से हटाना चाहते हैं? –
@Alex: इसे पूरी तरह से हटाएं – Claudiu