Как получить содержимое QListWidget?
Подскажите как вывести содержимое из QListWidget.
Пока при выборе директории выводится путь к файлам в PlainText и список в ListWidget, при выводе путь выводится как C:/, а содержимое как QListWidget at ...
def select_ws(self):
self.dir = QtWidgets.QFileDialog.getExistingDirectory(self, "choose directory")
self.ws_dir.setPlainText(self.dir)
if self.dir:
for root, dirs, files in os.walk(self.dir):
for file_name in files:
if file_name.endswith(".jpg):
self.WS_list.addItem(file_name)
def process(self):
data = pd.DataFrame(dict(Путь=[self.dir],
Список=[self.WS_list]))
print(data)
вот что выходит:
Путь Список
0 D:/МВК <PyQt5.QtWidgets.QListWidget object at 0x00000...
а хотелось бы чтобы получался список файлов по этой директории.
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
QListWidgetItem *QListWidget::item(int row) const
Возвращает элемент, занимающий данную строку в списке, если он был установлен; в противном случае возвращает nullptr.
QString QListWidgetItem::text() const
Возвращает текст элемента списка.
import sys
import os
import pandas as pd
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *
class MainWindow(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.textEdit = QtWidgets.QTextEdit()
self.listWidget = QtWidgets.QListWidget()
vbox = QVBoxLayout(self)
vbox.addWidget(self.textEdit)
vbox.addWidget(self.listWidget)
self.select_ws()
self.process()
def select_ws(self):
self.dir = QtWidgets.QFileDialog.getExistingDirectory(self, "choose directory")
self.textEdit.setPlainText(self.dir)
if self.dir:
for root, dirs, files in os.walk(self.dir):
for file_name in files:
if file_name.endswith(".jpg"):
self.listWidget.addItem(file_name)
def process(self):
list_item = [self.listWidget.item(row).text() for row in range(self.listWidget.count())] # +++
#print(*list_item, sep='\n')
data = pd.DataFrame(dict(
Путь=[self.dir],
Список=[list_item])) # + list_item
print(data)
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
