Как сохранить свойства listWidget? - PullRequest
0 голосов
/ 13 января 2019

У меня есть listWidget, который заполняется из файла CSV. Если пользователь щелкает элемент в списке виджетов, он выделяется зеленым цветом, если он белый, и белым, если он зеленый. При наличии нескольких элементов в списке после некоторых действий пользователя некоторые элементы могут быть зелеными, в то время как другие остаются белыми. Есть ли способ сохранить состояние listWidget, чтобы его можно было снова прочитать при следующем запуске приложения, показывая, что пользователь ранее выбрал в качестве выделенных зеленым цветом элементов?

def getFileName(self):
    global taps
    global percent        
    fileName = QtGui.QFileDialog.getOpenFileName()
    List = open(fileName).readlines()
    self.listWidget.clear()
    self.listWidget.addItems(List)
    for lines in List:
        taps +=1
        self.label_4.setText(str(taps))            
    percent = 100.0/taps

    self._white = QtGui.QBrush(QtCore.Qt.white)
    self._green = QtGui.QBrush(QtCore.Qt.green)

    for i in range(0, taps):
         self.listWidget.setCurrentRow(i)
         currentItem = self.listWidget.currentItem()
         currentItem.setBackground(self._white)
    self.listWidget.setCurrentRow(0)
    self.label_2.setText('0')
    self.label_6.setText('0')

def listChoice(self):
    #global value
    global consumed
    global remaining
    global percent
    global taps
    global newpercent

    currentItem = self.listWidget.currentItem() 
    color = currentItem.background()

    if color == self._white:
        currentItem.setBackground(self._green)
        consumed +=1
        taps = taps - 1
        newpercent += percent

    elif color == self._green:
        currentItem.setBackground(self._white)
        consumed -=1
        taps = taps + 1
        newpercent = newpercent - percent        

    currentItem.setSelected(False)

Я не нашел то, что искал, вероятно, потому что его не существует, но я нашел работу вокруг.

def saveFile(self, showDialog):
    savePath = QtGui.QFileDialog.getSaveFileName(None, "Tap Room", 
        "Testing.csv", "CSV files (*.csv)")
    with open(savePath, 'w') as theFile:
        for i in xrange(self.listWidget.count()):                
            self.listWidget.setCurrentRow(i)
            currentItem = self.listWidget.currentItem() 
            color = currentItem.background()                                                

            if color == self._green:                    
                theFile.write(str(self.listWidget.item(i).text()))
                theFile.write('Visited: ' + 
                    (str(self.listWidget.item(i).text())))
            else:                    
                theFile.write(str(self.listWidget.item(i).text()))
...