İçinde çocukları kaldırmak istediğim bir QGroupBox
widget'ım var. Bunu nasıl yaparım? Hiçbir removeWidget
, removeChild
, removeItem
veya the docs içinde benzer bir şey bulamıyorum. Öğeleri yalnızca bir düzenden nasıl kaldıracağımı görebilirim, ancak görünüşe göre, onu gerçek pencere öğesiden kaldırmaz.pyqt: Bir widget nasıl kaldırılır?
cevap
Peki kullanıyor, bu işleri i kaldırmak istediğiniz widget'ı, widget.setParent(None)
arayın. Bir düzene eklemenin kapsayıcıya bir widget eklediğini, ancak bir düzenden kaldırmanın ... eğlenceli şeyler olmadığını seviyorum. Widget'ınızın bağımlı hiçbir çocuğun widget'lar varsa
Bir widget'ın bir paftaya koyup koymadığına ve bir ebeveyne sahip olup olmadığına dair bir widgetin yaratıldığını anlamanız gerekir. Bir düzen ekran üzerinde organize etmek için sadece sorumludur, widget'ları göstermek ve gizlemek için güvenilir ve hatta kullanılabilir bir yöntem değildir –
Bir widget eklemek veya kaldırmak için bir yol görmüyorum (herhangi bir eklenti/eklenti işlevi kaldırmak) düzenleri. Widget'ın bir düzenine eklenmesi, görüntülenmesini sağlar (aslında ne yapması, widget'ın üst öğesinin düzen için kapsayıcıya ayarlanmasını sağlar). Aynı widget'ı aynı düzenden kaldırmanın görüntülenmeyeceğini (yani, düzeni eklediğim gibi geri döndürdüğümü) beklerim. ama bunu yapmanın tek yolu, widget'ın ebeveyni hiçbir zaman simetrik olmayan None'a ayarlamak gibi görünüyor. – Claudiu
iyi, ebeveyin 'removeChild' yöntemini kullanabilirsiniz, ancak 'saklamak' daha iyidir –
Gerçekten widget'ını silmek istediğinizden emin misiniz? hide
yapamaz mı? IMHO kabul edilen yöntem, widget'ların görünmesi ve kullanıcının görünümünden kaybolması için show
/hide
'u kullanıyor.
alternatif QStackedWidget
yea; [buraya bakın] (http://stackoverflow.com/questions/5889705/pyqt-how-to-remove-elements-from-a-qvboxlayout/5890555#5890555). sanırım saklanmak da işe yarayabilir – Claudiu
@Claidiu: Eğer istediğin buysa, cevabın size çözüm getirdiğini düşünüyorum. –
@Eli: cevabın bana ne olduğunu anlatma burada soruyordu. – Claudiu
i kullanabilirsiniz düşünüyorum: Benim testlerde
layout.removeWidget(self.widget_name)
self.widget_name.deleteLater()
self.widget_name = None
o kadar sahip çocuk var bir widget olduğunda:
import sip
layout.removeWidget(self.widget_name)
sip.delete(self.widget_name)
self.widget_name = None
Eğer sınıf veya global düzeyde widget için bir değişken adınız yoksa, layout.takeAt (index) ile düzeni kaldırır ve QLayoutItem'den widget işaretçisini alabilir, bu işlevler QLayoutItem.widget() yöntemiyle döner. Bu durumda hiçbiri değişken ismine atamak zorunda değilsiniz çünkü işlevinizin dışında başvurulan.
Her iki yöntemi de deneyin ve sizin için neyin işe yaradığını görün (bellekleri bir kaç kez tekrarladıktan sonra sızdırmayın).
- 1. Ekranın ortasında PySide/PyQt içinde bir widget nasıl oluşturulur?
- 2. Android'de uygulama kaldırıldığında widget nasıl kaldırılır?
- 3. PyQt
- 4. PyQt
- 5. pyQt: Bir etiketi nasıl güncellerim?
- 6. PyQt
- 7. wxWidgets'da bir widget ile nasıl bir widget alırım?
- 8. PyQt
- 9. PyQt
- 10. pyQt
- 11. PyQt
- 12. piton veya PyQt
- 13. Widget
- 14. GWT'de bir Widget nasıl döndürülebilir?
- 15. Bir onay kutusunun pyqt
- 16. PyQT projesi nasıl oluşturulur?
- 17. pyqt - bir textarea'ya nasıl mesaj yazılır - bir konsola yazdırma gibi -
- 18. PyQt içinde QPaintEvents'ları geçersiz kılma
- 19. PyQt içinde derleme gölgelendiricileri
- 20. Bir jQuery UI Widget
- 21. Hücre Bir Hücre'ye nasıl bir widget yerleştirebilirim?
- 22. Pyqt: QLineEdit'in odaklandığı bir sinyal nasıl alınır?
- 23. click widget tarihinde android widget
- 24. elle nasıl Widget kendisi
- 25. Python/PyQT: QLineEdit
- 26. PySide/PyQt
- 27. PyQt: ComboBox Öğeleri nasıl özelleştirilir?
- 28. PyQt QComboBox
- 29. Diğer widget (ler) i bildiren widget
- 30. Grid Widget sütunu - Widget üzerinde değişiklik, ızgara deposunun nasıl güncelleneceği
QGroupBox'tan widget'ı kaldırmak için _just_'ı veya widget'ı silmek mi istiyorsunuz? –
@Alex: hepsini tamamen sil – Claudiu