2012-11-16 21 views
5

Recentemente ho iniziato a studiare Python e ora sto creando un software con una GUI usando le librerie PyQt.Aggiornamento dinamico QGridLayout - Python PyQt

Ecco il mio problema: Ho creato una Scrollarea, ho inserito in questa scrollarea un widget che contiene un QGridLayout.

sa = QtGui.QScrollArea() 
    sa_widget = QtGui.QWidget() 
    self.sa_grid.setSizeConstraint(QtGui.QLayout.SetMinAndMaxSize) 
    sa_widget.setLayout(self.sa_grid) 
    sa.setWidgetResizable(True) 
    sa.setWidget(sa_widget) 

poi aggiungo 10 QLabel (questo è solo un esempio, ovviamente, in questo esempio sto usando un QGridLayout proprio come un layout verticale):

i = 0 
    while i<100: 
     i = i +1 
     add = QtGui.QLabel("Row %i" % i) 
     self.sa_grid.addWidget(add) 

Poi creare un pulsante che chiama la funzione "nome_funzione", voglio che questa funzione elimina una riga, finora questo è quello che ho scritto:

tmp = QtGui.QWidget() 
    tmp = self.sa_grid.itemAt(0) 
    self.sa_grid.removeItem(tmp) 

cancella la prima riga e ogni x riga della GridLayout diventa fila x-1 , tuttavia, lo fa non eliminare il testo "Row 1", quindi vedo "Row 0" e "Row 1" sulla stessa riga.

Chiunque può aiutarmi?

Grazie mille in anticipo, Davide

risposta

2

Rimozione di un oggetto da un layout non eliminarlo. L'oggetto diventerà semplicemente un oggetto fluttuante senza alcun layout associato.

Se si vuole sbarazzarsi dell'oggetto completamente, eliminare esplicitamente:

def deleteGridWidget(self, index): 
    item = self.sa_grid.itemAt(index) 
    if item is not None: 
     widget = item.widget() 
     if widget is not None: 
      self.sa_grid.removeWidget(widget) 
      widget.deleteLater() 
+0

funziona perfettamente, grazie mille! Ho perso così tanto tempo alla ricerca di una risposta e ora ho capito. Potresti suggerirmi qualche grande tutorial Python/PyQt, per favore? Grazie mille per il vostro aiuto! – xuT

+0

@ TheTux94. Il [PyQt Wiki] (http://www.diotavelli.net/PyQtWiki/StartPage?action=show&redirect=FrontPage) non è un brutto posto per iniziare. Non tutto il materiale è aggiornato (alcuni si riferiscono a PyQt3 piuttosto che a PyQt4), ma se si scavalca si dovrebbero trovare molte cose utili. – ekhumoro

Problemi correlati