下面是一个示例代码,可以实现将指定的文件夹下的所有文件或文件夹显示在主界面的treewidget上:
import os
from PyQt5.QtWidgets import QWidget, QTreeWidget, QTreeWidgetItem
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建 treewidget
self.tree = QTreeWidget()
self.tree.setHeaderLabel('Files and Directories')
self.tree.itemDoubleClicked.connect(self.itemDoubleClick)
# 遍历文件夹并添加到 treewidget 中
root_path = '/path/to/folder' # 指定要遍历的文件夹路径
self.addItems(self.tree, root_path)
# 将 treewidget 添加到主窗口中
layout = QVBoxLayout()
layout.addWidget(self.tree)
self.setLayout(layout)
def addItems(self, parent, path):
# 遍历 path 下的所有文件和文件夹
for item in os.listdir(path):
# 构造新节点对象
new_item = QTreeWidgetItem(parent, [item])
# 如果当前遍历到的是文件夹,则递归调用 addItems 函数
sub_path = os.path.join(path, item)
if os.path.isdir(sub_path):
self.addItems(new_item, sub_path)
def itemDoubleClick(self, item, column):
print(item.text(column))
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
在上述代码中,我们首先创建了一个 QTreeWidget 对象 self.tree
,并将其添加到主界面中。
然后通过 addItems
函数遍历指定文件夹下的所有文件和文件夹,对于每个对象都创建一个新的 QTreeWidgetItem 并添加到父节点中。如果当前对象是一个文件夹,则递归调用 addItems
函数,将该文件夹下的文件和文件夹也添加到树形控件中。
最后,我们将 self.tree
添加到主窗口的 QVBoxLayout 布局中,并显示主界面。