【Python】【tkinter 】先通过图形界面选择文件或文件夹,然后输出用户选择的文件或文件夹的路径

窗口选择文件或者文件夹:

使用tkinter库创建一个简单的图形界面,允许用户选择文件或文件夹,并返回所选路径。

import tkinter as tk
from tkinter import filedialog

def select_file_or_folder():
    selected_path = None

    def select_folder():
        nonlocal selected_path
        folder_path = filedialog.askdirectory()
        if folder_path:
            selected_path = folder_path
            root.withdraw()
            root.destroy()
    
    def select_file():
        nonlocal selected_path
        file_path = filedialog.askopenfilename()
        if file_path:
            selected_path = file_path
            root.withdraw()
            root.destroy()
    
    def select_option():
        if option.get() == 1:
            select_file()
        elif option.get() == 2:
            select_folder()

    root = tk.Tk()
    root.withdraw()

    option = tk.IntVar()

    label = tk.Label(root, text="Select an option:")
    label.pack()

    file_button = tk.Radiobutton(root, text="选择一个文件", variable=option, value=1, command=select_file)
    file_button.pack()

    folder_button = tk.Radiobutton(root, text="选择文件夹", variable=option, value=2, command=select_folder)
    folder_button.pack()

    root.deiconify()  # 显示窗口
    root.mainloop()

    return selected_path

path = select_file_or_folder()
print(path)

select_folder()select_file()函数内部调用了root.withdraw()来隐藏窗口,并使用root.destroy()来关闭窗口。这样,在选择文件或文件夹后,根窗口将被隐藏或关闭。

函数select_file_or_folder()是主函数,它执行以下操作:

  1. 初始化selected_path变量为None,用于存储所选的文件或文件夹路径。
  2. 定义select_folder()函数,用于选择文件夹路径。它使用filedialog.askdirectory()函数弹出一个文件夹选择对话框,并将所选的文件夹路径存储在folder_path变量中。
    • 如果选择了文件夹路径,将selected_path设置为folder_path,然后使用root.withdraw()隐藏根窗口,最后使用root.destroy()关闭根窗口。
  3. 定义select_file()函数,用于选择文件路径。它使用filedialog.askopenfilename()函数弹出一个文件选择对话框,并将所选的文件路径存储在file_path变量中。
    • 如果选择了文件路径,将selected_path设置为file_path,然后使用root.withdraw()隐藏根窗口,最后使用root.destroy()关闭根窗口。
  4. 定义select_option()函数,根据用户选择的选项调用相应的函数。
    • 如果选项为1,调用select_file()函数。
    • 如果选项为2,调用select_folder()函数。
  5. 创建根窗口root,并使用root.withdraw()隐藏窗口。
  6. 创建一个整型变量option,用于存储用户选择的选项。
  7. 创建一个标签label,显示文本"Select an option:"。
  8. 创建两个单选按钮file_buttonfolder_button,分别表示选择文件和选择文件夹的选项。
    • 它们绑定到option变量,并在选择时调用相应的函数。
  9. 显示窗口,使用root.deiconify()方法。
  10. 进入主事件循环,等待用户交互,直到用户进行选择并关闭窗口。
  11. 返回selected_path,即用户所选的文件或文件夹路径。

最后,在调用select_file_or_folder()函数时,将所选路径存储在变量path中,并打印到控制台。

该代码通过使用tkinter库提供的对话框函数,结合使用标签和单选按钮,创建了一个简单的图形界面,以实现选择文件或文件夹的功能。

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ICEM 优点: 1. 适用于复杂几何体的建模和网格划分,可以处理大规模的网格。 2. 提供了一些高级的网格划分功能,如自适应网格划分和网格优化。 3. 可以导入多种文件格式,包括STEP、IGES、CATIA等。 4. 可以与ANSYS等其他软件进行无缝集成。 缺点: 1. 学习曲线较陡峭,需要一定的培训和经验。 2. 操作比较繁琐,需要多次调整参数才能得到合适的网格。 3. 软件较为昂贵,需要付费购买授权。 Gambit 优点: 1. 易于学习和使用,适合初学者。 2. 可以轻松地创建简单的几何形体和网格。 3. 可以与ANSYS等其他软件进行无缝集成。 4. 支持多种文件格式,包括IGES、STEP、CATIA等。 缺点: 1. 对于复杂的几何形体和网格划分,效率不高。 2. 不支持自适应网格划分和网格优化。 3. 对于大规模的网格划分,可能会出现内存不足的情况。 ANSYS Workbench Mesh 优点: 1. 可以在ANSYS Workbench中直接进行网格划分,不需要切换软件界面。 2. 可以自动进行网格划分,适合初学者和快速网格划分。 3. 可以与ANSYS等其他软件进行无缝集成。 缺点: 1. 对于复杂的几何形体和网格划分,效率不高。 2. 不支持自适应网格划分和网格优化。 3. 对于大规模的网格划分,可能会出现内存不足的情况。 Hyper Mesh 优点: 1. 可以快速创建复杂的几何形体和网格。 2. 支持自适应网格划分和网格优化。 3. 可以与其他有限元分析软件进行无缝集成。 4. 支持多种文件格式,包括IGES、STEP、CATIA等。 缺点: 1. 学习曲线较陡峭,需要一定的培训和经验。 2. 操作比较繁琐,需要多次调整参数才能得到合适的网格。 3. 软件较为昂贵,需要付费购买授权。 Fluent Meshing 优点: 1. 可以自动进行网格划分,适合初学者和快速网格划分。 2. 可以处理复杂的几何形体和大规模的网格。 3. 可以与ANSYS Fluent进行无缝集成。 缺点: 1. 不支持自适应网格划分和网格优化。 2. 对于一些特殊的几何形体,可能会出现网格质量不佳的情况。 3. 不支持多种文件格式,只能导入ANSYS Fluent支持的文件格式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值