Remove items from QListWidget in PyQt5

℡╲_俬逩灬. 提交于 2020-06-14 07:35:34

问题


I am trying to make a refresh button in pyqt5. I am building a desktop app. I wrote the code that scans particular folder and saves filenames and their paths as an array.

Array values are added to QListWidget as items

self.sampleChoose_list.addItems(sample_directory[0])

I am trying to make a function that refreshes values of the array and passes it to QListWidget.

Something like this

self.refreshSamples.clicked.connect(self.refreshSample)

def refreshSample(self): 
    sample_directory = []
    sample_files = []
    for (dirpath, dirnames, filenames) in walk('./Samples'):
        filenames = [f for f in filenames if not f[0] == '.']
        sample_files.extend(filenames)
        break
    the_dir = "Samples"
    paths = [os.path.abspath(os.path.join(the_dir,filename)) for filename in os.listdir(the_dir) if not filename.startswith('.')]    

    sample_directory.append(sample_files)
    sample_directory.append(paths)

    self.sampleChoose_list.addItems(sample_directory[0])

The problem that I struggle with is: when I push refresh button, new items get added, but the old ones are not deleted. How to remove items from QListWidget?


回答1:


use QListWidget.clear() and it

Removes all items and selections in the view.

for am more selective approuch you can use QListWidget.takeItem( index ), it

Removes and returns the item from the given row in the list widget


Official Docs: clear()
Official Docs: takeItem()



来源:https://stackoverflow.com/questions/49068100/remove-items-from-qlistwidget-in-pyqt5

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!