Python tkinter树状目录窗口实现

本文介绍了如何通过Tkinter库在GUI中创建一个具有树状目录结构的左侧导航,用户可以浏览并选择文件,右侧会实时显示所选文件的内容。涉及到的控件包括Treeview、Entry、Text和Scrollbar。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过tkinter GUI实现读取特定目录下所有目录及文件并在窗口中可选择显示。

通过左右布局实现,左侧为树状目录,右侧为输入框和显示文本框。

 

目录

tkinter树状目录

左侧树状目录

右侧显示

调用实现窗口

打开目录

打开py文件 

总结


tkinter树状目录

左侧树状目录

左侧显示分级的文件目录列表,通过选择目录打开其下的目录或文件,

并赋值内容在右侧显示。

示例如下:

import tkinter
from tkinter import ttk
import os


class TreeWin(tkinter.Frame):

    def __init__(self, master, path, otherWin):
        frame = tkinter.Frame(master)
        frame.grid(row=0, column=0)

        # 绑定infoWin
        self.otherWin = otherWin
        self.tree = ttk.Treeview(frame)
        self.tree.pack(side=tkinter.LEFT, fill=tkinter.Y)

        tmp_path = path.replace('\\', '-')
        root = self.tree.insert('', 'end',
                                text=self.get_last_path(path),
                                open=True,
                                values=(tmp_path))

        self.load_tree(root, path)

        # 滚动条
        self.scr = tkinter.Scrollbar(frame)
        self.scr.pack(side=tkinter.RIGHT, fill=tkinter.Y)
        self.scr.config(command=self.tree.yview)
        self.tree.config(yscrollcommand=self.scr.set)

        # 绑定事件
        self.tree.bind('<<TreeviewSelect>>', self.find_fun)

    #
    def find_fun(self, event):
        # widget 触发这个事件的小构件对象
        find_names = event.widget.selection()
        for sv in find_names:
            file_name = self.tree.item(sv)['text']
            # 在entry控件中显示文件名称
            self.otherWin.ev.set(file_name)
            path2 = self.tree.item(sv)['values'][0]
            path3 = path2.replace('-', '\\')
            str_text = path3
            if str_text.endswith('.py'):
                str_text += "\n"
                with open(path3, 'r', encoding='utf-8') as f:
                    str_text += f.read()
            # 把内容显示到text控件中
            self.otherWin.txt.delete(0.0, tkinter.END)
            self.otherWin.txt.insert(tkinter.INSERT, str_text)

    # 把下级目录或文件加入到树状目录
    def load_tree(self, parent, parentPath):
        for fileName in os.listdir(parentPath):
            absPath = os.path.join(parentPath, fileName)
            tmp_path = absPath.replace('\\', '-')
            # 插入树枝
            treeF = self.tree.insert(parent, 'end',
                                     text=self.get_last_path(absPath),
                                     values=(tmp_path))
            if os.path.isdir(absPath):
                self.load_tree(treeF, absPath)

    # 解析路径中的文件名
    def get_last_path(self, path):
        paths = os.path.split(path)
        return paths[-1]

右侧显示

右侧内容为一个输入框和文本内容显示框,来显示左侧选择的文件路径及文件内容。

示例如下:

import tkinter


class InfoWin(tkinter.Frame):

    def __init__(self, master):
        frame = tkinter.Frame(master)
        frame.grid(row=0, column=1)

        self.ev = tkinter.Variable()
        self.entry = tkinter.Entry(frame, textvariable=self.ev)
        self.entry.pack()

        self.txt = tkinter.Text(frame)
        self.txt.pack(side=tkinter.LEFT, fill=tkinter.Y)

        # 滚动条
        self.scr = tkinter.Scrollbar(frame)
        self.scr.pack(side=tkinter.RIGHT, fill=tkinter.Y)
        self.scr.config(command=self.txt.yview)
        self.txt.config(yscrollcommand=self.scr.set)

调用实现窗口

对左右两侧实现内容进行整合,调用实现整体功能。

示例如下:

import tkinter

from treeWin import TreeWin
from infoWin import InfoWin


tk = tkinter.Tk()
tk.title('树状目录')
tk.geometry('900x400+200+50')

path = 'E:\lianxipy\python基础'
infoWin = InfoWin(tk)
treeWin = TreeWin(tk, path, infoWin)

tk.mainloop()

调用treeView.py后可实现下面效果。

效果如下:

打开目录

打开py文件 

总结

本篇为Python tkinter控件的综合应用,实现了一个比较简单的树状目录窗口。

涉及布局、滚动条、输入文本、文本显示等控件使用。

### 本地部署 FunASR 模型教程及配置说明 #### 创建 Python 虚拟环境并激活 为了确保依赖项不会影响其他项目,在开始之前创建一个新的 Python 3 虚拟环境是非常重要的。这可以通过以下命令完成: ```bash python3 -m venv funasr_env source funasr_env/bin/activate # Linux 或 macOS 用户 funasr_env\Scripts\activate # Windows 用户 ``` 一旦虚拟环境被成功激活,可以继续安装所需的库和工具。 #### 安装 FunASR 及其依赖包 接下来,通过 pip 工具来设置 FunASR 的运行环境。对于想要利用 ModelScope 中发布的预训练模型的情况,还需要额外安装 `modelscope` 库[^3]。 ```bash pip install git+https://github.com/alibaba/FunASR.git@main pip install -U modelscope ``` #### 获取模型权重文件 根据网络连接状况的不同,有两种方式可以获得必要的模型参数: - 对于能够访问互联网的机器,可以直接跳过此步骤,因为后续调用 API 时会自动拉取所需资源。 - 如果是在离线环境下工作,则需提前准备好这些文件,并将其放置在一个合适的位置以便稍后加载使用[^2]。 #### 编写简单的测试程序验证功能正常 最后一步是编写一段简短的 Python 程序来进行初步的功能检测。这段代码展示了如何定义一个推理管道以及执行一次实际的任务实例。 ```python from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks inference_pipeline = pipeline( task=Tasks.auto_speech_recognition, model='damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch', ) rec_result = inference_pipeline(audio_in='path_to_your_audio_file.wav') print(rec_result) ``` 以上就是完整的 Win10 平台上本地部署 FunASR 语音识别系统的指南[^1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JSON_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值