2017-06-18 80 views
0

我需要隨機填寫表格。我用for循環做了這個。但是填充只發生在最後一次迭代中。也就是說,只有一個單元格被重新繪製。這是一個功能:PyQt5填表

def generateTable(self): 
    count = random.randint(10, 20) 
    item = QtWidgets.QTableWidgetItem() 
    predator = QtGui.QBrush(QtGui.QColor(0, 255, 0)) 
    predator.setStyle(QtCore.Qt.SolidPattern) 
    herbivore = QtGui.QBrush(QtGui.QColor(255, 0, 0)) 
    herbivore.setStyle(QtCore.Qt.SolidPattern) 
    for i in range(count): 
     x = random.randint(0, 19) 
     y = random.randint(0, 29) 
     if random.randint(0, 1) == 0: 
      item.setBackground(predator) 
      self.BoardTable.setItem(x, y, item) 
     else: 
      item.setBackground(herbivore) 
      self.BoardTable.setItem(x, y, item) 

我認爲沒有足夠的循環中重要的一行。

+0

什麼是'self.BoardTable'? –

+0

這是Table Widget –

回答

0

我不得不把QTableWidgetItem在循環:

def generateTable(self): 
    count = random.randint(10, 20) 
    predator = QtGui.QBrush(QtGui.QColor(255, 0, 0)) 
    predator.setStyle(QtCore.Qt.SolidPattern) 
    herbivore = QtGui.QBrush(QtGui.QColor(0, 255, 0)) 
    herbivore.setStyle(QtCore.Qt.SolidPattern) 
    for i in range(count): 
     item = QtWidgets.QTableWidgetItem() 
     x = random.randint(0, 19) 
     y = random.randint(0, 29) 
     if random.randint(0, 1) == 0: 
      item.setBackground(predator) 
      self.BoardTable.setItem(x, y, item) 
     else: 
      item.setBackground(herbivore) 
      self.BoardTable.setItem(x, y, item)