У меня есть 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()))