2012-11-16 15 views
5

Niedawno zacząłem studiować Python, a teraz tworzę oprogramowanie z GUI używając bibliotek PyQt.Aktualizowanie dynamicznego QGridLayout - Python PyQt

Oto mój problem: Tworzę Scrollarea, umieszczam w tym scrollarea widget, który zawiera 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) 

Następnie dodaję 10 QLabel (to tylko przykład oczywiście, w tym przykładzie używam QGridLayout podobnie jak układ pionowy):

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

Potem utworzyć przycisk wywołuje funkcję „nazwa_funkcji”, chcę, że funkcja ta usuwa wiersz, do tej pory jest to co pisałem:

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

usuwa pierwszy wiersz i każdy x wiersz GridLayout staje wiersz x-1 jednak tak jest nie usuwaj tekstu "Wiersz 1", więc widzę "Wiersz 0" i "Wiersz 1" w tym samym wierszu.

Ktoś może mi pomóc?

Dzięki dużo wcześniej, Davide

Odpowiedz

2

Usuwanie elementu z układu nie powoduje usunięcia go. Przedmiot stanie się po prostu obiektem swobodnym, bez powiązanego układu.

Jeśli chcesz pozbyć się obiekt całkowicie jawnie go usunąć:

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

działa idealnie, dziękuję! Zmarnowałem tak wiele czasu szukając odpowiedzi, a teraz ją dostałem. Czy mógłbyś zaproponować mi świetny samouczek w języku Python/PyQt? Bardzo dziękuję za Twoją pomoc! – xuT

+0

@ TheTux94. [PyQt Wiki] (http://www.diotavelli.net/PyQtWiki/StartPage?action=show&redirect=FrontPage) nie jest złym miejscem do rozpoczęcia. Nie wszystkie materiały są aktualne (niektóre z nich dotyczą PyQt3, a nie PyQt4), ale jeśli kopiesz wokół, powinieneś znaleźć wiele użytecznych rzeczy. – ekhumoro