PyQt5实现多文件QTreeView纵向排列展示问题求助
实现多文件树形视图纵向排列展示
核心思路
选择文件夹后,遍历所有.odl文件,创建带滚动区域的容器窗口,将每个文件对应的树形视图(搭配文件标题标签)依次添加到垂直布局中,实现纵向排列展示。
代码修改步骤
- 导入文件遍历模块:在
start_window.py开头添加文件操作模块,用于筛选文件夹内的目标文件:
import os # ... 保留原有其他导入代码
- 完善
choose_folder方法:替换原方法中的占位代码,实现文件筛选、容器窗口创建和多视图布局:
class StartWindow(QDialog): # ... 保留原有初始化代码 def choose_folder(self): folder_path = QFileDialog.getExistingDirectory(self, "Open Folder Containing ODL Files") if folder_path: # 筛选文件夹下所有.odl格式文件(不区分大小写) odl_files = [] for filename in os.listdir(folder_path): if filename.lower().endswith('.odl'): odl_files.append(os.path.join(folder_path, filename)) if not odl_files: QMessageBox.warning(self, "无ODL文件", "选中的文件夹中未找到ODL格式文件。") return # 创建统一容器窗口展示所有视图 container_win = QMainWindow() container_win.setWindowTitle(f'DM Parsing - 文件夹: {os.path.basename(folder_path)}') # 配置滚动区域,支持文件过多时滚动查看 scroll_widget = QWidget() scroll_layout = QVBoxLayout(scroll_widget) scroll_area = QScrollArea() scroll_area.setWidgetResizable(True) scroll_area.setWidget(scroll_widget) container_win.setCentralWidget(scroll_area) # 逐个添加文件的树形视图 for file_path in odl_files: # 添加文件名称标签,区分不同文件 file_title = QLabel(f'文件: {os.path.basename(file_path)}') file_title.setFont(QFont('微软雅黑', 10, QFont.Bold)) scroll_layout.addWidget(file_title) # 创建当前文件的树形视图 parser = ODLParser(file_path) table_view = Table(parser) table_view.setMinimumHeight(250) # 设置最小高度,避免视图过挤 scroll_layout.addWidget(table_view) # 添加拉伸项,让最后一个视图下方保留空白 scroll_layout.addStretch() container_win.resize(850, 600) container_win.show()
- 调整
Table类(若需适配):如果你的Table类继承自QMainWindow,需要改为继承QWidget,否则无法添加到布局中。修改示例:
# table_view.py中的Table类修改 from PyQt5.QtWidgets import QWidget, QVBoxLayout, QTreeView class Table(QWidget): def __init__(self, parser): super().__init__() layout = QVBoxLayout(self) self.tree_view = QTreeView() # 原有设置模型、解析数据的代码保持不变 # 例如:self.tree_view.setModel(parser.get_model()) layout.addWidget(self.tree_view)
效果说明
- 选择文件夹后自动筛选
.odl文件,无匹配文件时弹出提示 - 每个文件的树形视图上方显示对应文件名,便于区分
- 窗口内置滚动区域,文件数量较多时可滚动查看
- 每个视图设置最小高度,避免显示过于紧凑
内容的提问来源于stack exchange,提问作者roua mallek
相关产品推荐
相关产品推荐

