как вернуть выбранный элемент в списке, а не последний элемент в списке, используя Pyqt5 в python

У меня есть код, который отображает элементы в QlistWidget, которые ссылаются на путь к файлу, когда пользователь выбирает любой файл, система возвращает только последний элемент.

Мне нужно вернуть только выбранный элемент.

так что пользователь сможет выбрать любой элемент независимо от того, где он существует.

пример :

  • C:\Users\test\Desktop\Новая строка Microsoft Word Document.docx => 0
  • C:\Users\test\Desktop\test_arabic.docx строка => 1

В приведенной ниже функции я пытаюсь перебрать элементы в QlistWidget.

  1. Получите полный путь к файлу (от корня)
  2. Разделить путь
  3. Добавьте оставшуюся часть пути на основе индекса

но это не сработало, потому что иногда отображаемые файлы в списке находятся в другой папке, поэтому имеют другой путь.

код:

def FileListSelected(self):             # Function to select the desired file from the list in the left pane
        ListIterator=range(self.listWidgetPDFlist.count())
        try:
            index = 0   
            for index in ListIterator:
                p = pathlib.Path(self.fullPath)
                print("this is P==>{}".format(p))
                oneDir = os.path.join(*p.parts[:-2])
                print("this is oneDir==>{}".format(oneDir))            
                Item= oneDir + "\\" + self.listWidgetPDFlist.selectedItems()[index].text()
                print("this is the cuurent Item =={}".format(Item))            
                ppp=os.path.join(os.path.expanduser("~"), Item) 

                print("this is ppp==>{}".format(ppp))
                print("===============================================")
                index =+1
                print("index =>".format(index))
                self.mouseHover()
                return ppp
        except Exception as e:
            print(e)

person pydev    schedule 19.06.2018    source источник


Ответы (1)


Если я вас правильно понял, вы хотите получить текст выбранного элемента из списка. Для этого используйте:

self.listWidgetPdfList.selectedItems()[0].text()

Здесь вы используете 0 в качестве индекса, потому что вам нужен только первый элемент в списке выбранных элементов. Итерация по списку не нужна, если вам нужен только выбранный элемент.

person MalloyDelacroix    schedule 19.06.2018
comment
я попробовал ваш ответ, но все та же проблема ... я отредактирую свой вопрос и добавлю, что я сделал, и возвращенный результат - person pydev; 21.06.2018