2012-11-16 13 views
5

Son zamanlarda Python üzerinde çalışmaya başladım ve şimdi PyQt Libraries kullanarak bir GUI ile bir yazılım yapıyorum.Dinamik QGridLayout Güncellemesi - Python PyQt

İşte benim sorunum: Bir Scrollarea oluşturuyorum, bu scrollarea bir QGridLayout içeren bir widget yerleştirin.

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) 

Sonra eklemek 10 QLabel (bu tabii ki sadece bir örnektir bu örnekte sadece bir Dikey Düzeni gibi QGridLayout kullanıyorum):

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

Sonra bir düğme oluşturmak olduğunu fonksiyon "FUNCTION_NAME", bu fonksiyon bir satır siler bunu istiyorum aramaları, şimdiye kadar bu yazdığım budur:

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

ilk satır ve GridLayout her x satırı siler

satır x-1 olur Ancak, o yapar "Satır 1" metnini silmiyorum, böylece "Satır 0" ve "Satır 1" aynı satırda görüyorum.

Herkes bana yardımcı olabilir?

Teşekkür silmez bir düzen bir öğeyi kaldırma önceden bir çok Davide

cevap

2

. Öğe, ilişkili bir düzen içermeyen serbest yüzen bir nesne olacaktır. Tamamen nesne kurtulmak istiyorsanız

açıkça silin: mükemmel

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

İşleri, çok teşekkürler! Bir cevap aramak için çok zaman harcadım ve şimdi anladım. Bana biraz Python/PyQt öğretici önerebilir misin, lütfen? Yardımın için çok teşekkürler! – xuT

+0

@ TheTux94. [PyQt Wiki] (http://www.diotavelli.net/PyQtWiki/StartPage?action=show&redirect=FrontPage) başlamak için kötü bir yer değildir. Tüm materyaller güncel değil (bir kısmı PyQt3'ten ziyade PyQt3 ile ilgilidir), ancak etrafta dolaşırsanız çok yararlı şeyler bulmalısınız. – ekhumoro