如何使用Tkinter下拉菜单打开文件夹中的文件

4

我需要帮助,想知道如何在下拉菜单中选择文件夹后制作按钮。

例如:我有三个文件夹名称为"Folder 1"、"Folder 2"和"Folder 3"。在"Folder 1"中,我有5个Excel(.xlsx)文件。因此,我需要帮助读取并显示一个Excel(.xlsx)文件的数据。

目前的情况是:我在下拉菜单中选择了"Folder 1"。接下来,我需要的是一个按钮,可以打开"Folder 1"并显示另外5个Excel(.xlsx)文件的列表。然后,我就可以选择其中一个Excel(.xlsx)文件并在GUI中显示其数据。

这是我的代码...... 帮帮我吧 :'(


import os
import tkinter as tk
from tkinter import ttk
#import tkinter as tk
from tkinter import filedialog, messagebox, ttk
folder = r'C:\Users\test folder'
filelist = [fname for fname in os.listdir(folder)]
master = tk.Tk()
master.geometry('1200x800')
master.title('Select a file')
optmenu = ttk.Combobox(master, values=filelist, state='readonly')
optmenu.pack(fill='x')
master.mainloop()


在Tkinter中显示Excel文件是一个问题,选择文件是另一个问题。 - Delrius Euphoria
我认为你要找的是 glob - Delrius Euphoria
2个回答

2

你不能仅使用tkinter选择并读取文件内容。你需要编写其他脚本来进行读取。

从tkinter的组合框中选择文件名所做的是获取特定文件名作为字符串类型。

然而,在Python中读取.xlsx文件非常简单。你可以使用Pandas模块。

我已经为你编写了读取文件的代码,(但你需要安装pandas)

from functools import partial
import os
import tkinter as tk
from tkinter import ttk
#import tkinter as tk
from tkinter import filedialog, messagebox, ttk
import pandas


def get_selected_file_name(file_menu):
    filename = file_menu.get()
    print("file selected:", filename)
    reader = pandas.read_excel(filename)  # code to read excel file
    # now you can use the `reader` object to get the file data


folder = os.path.realpath('./test_folder')
filelist = [fname for fname in os.listdir(folder)]
master = tk.Tk()
master.geometry('1200x800')
master.title('Select a file')
optmenu = ttk.Combobox(master, values=filelist, state='readonly')
optmenu.pack(fill='x')

button_select = tk.Button(master, text="Read File",
                          width=20,
                          height=7,
                          compound=tk.CENTER,
                          command=partial(get_selected_file_name, optmenu))
button_select.pack(side=tk.RIGHT)
master.mainloop()

这个窗口应该长这样:

我需要你在这个问题上的帮助 https://stackoverflow.com/questions/66309595/tkinter-open-html-file-based-on-filename-in-dropdown-menu - NAzira Nasir

1
我建议您使用tkinter中的filedialog模块进行探索。
import tkinter as tk
from tkinter import filedialog


def load_file():
    f_in = filedialog.askopenfilename( filetypes = [ ( 'Python', '*.py' ) ])  # Change to appropriate extension.
    if len( f_in ) > 0:
        with open( f_in, 'r' ) as file:
            filedata = file.read()
        print( filedata )   # printed to the terminal for simplicity.
                            # process it as required.

root = tk.Tk()

tk.Button( root, text = 'Find File', command = load_file ).grid()

root.mainloop()

askopenfilename允许用户浏览文件夹树以找到正确的文件。基本文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接