2016-06-01 16 views
0
datainputHbox = QHBoxLayout() 
layout = QVBoxLayout(self) 
layout.addLayout(datainputHbox) 


pagedatainputdeletboxbutton1.clicked.connect(lambda:self.boxdelete(datainputHbox)) 

def boxdelete(self, box): 

Dies ist die PyQt proragm zu entfernen Wie boxdelete funtion, um schreiben zu datainputHbox Formularlayout zu entfernen. Ich versuche viel. Ich kann jedoch nur alle Widgets entfernen, aber das Layout nicht entfernen.PyQt Wie ein Layout aus einem Layout

+0

Huh. Ich dachte wirklich, dass es eine 'removeLayout' Funktion gibt ... –

Antwort

2

Sie können QLayouts entfernen, indem Sie ihre entsprechenden QLayoutItem erhalten und entfernen. Sie sollten auch Referenzen auf Ihre Layouts speichern, sonst gibt es keine andere Möglichkeit, später darauf zuzugreifen, es sei denn, Sie kennen das Widget, zu dem sie gehören.

datainputHbox = QHBoxLayout() 
self.vlayout = QVBoxLayout(self) 
layout.addLayout(datainputHbox) 
pagedatainputdeletboxbutton1.clicked.connect(lambda: self.boxdelete(datainputHbox)) 

def boxdelete(self, box): 
    for i in range(self.vlayout.count()): 
     layout_item = self.vlayout.itemAt(i) 
     if layout_item.layout() == box: 
      self.vlayout.removeItem(layout_item) 
      return 
0

Als allgemeine Antwort: taken from here mit leichten, aber wichtigen Änderungen: Sie sollten nicht nennen widget.deleteLater(). Zumindest in meinem Fall verursachte Python

globale Funktion zum Absturz

def deleteItemsOfLayout(layout): 
    if layout is not None: 
     while layout.count(): 
      item = layout.takeAt(0) 
      widget = item.widget() 
      if widget is not None: 
       widget.setParent(None) 
      else: 
       deleteItemsOfLayout(item.layout()) 

zusammen mit der boxdelete Funktion von Brendan Abel's Antwort

def boxdelete(self, box): 
    for i in range(self.vlayout.count()): 
     layout_item = self.vlayout.itemAt(i) 
     if layout_item.layout() == box: 
      deleteItemsOfLayout(layout_item.layout()) 
      self.vlayout.removeItem(layout_item) 
      break 
Verwandte Themen