gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 15:07:15 25 4
gpt4 key购买 nike

在下拉列表中选择文件夹后,我需要有关如何制作按钮的帮助。
例如:我有 3 个文件夹名称为“文件夹 1”、“文件夹 2”和“文件夹 3”。在“文件夹 1”内,我有 5 个 excel(.xlsx) 文件。因此,我需要有关如何读取和显示 1 个 excel(.xlsx) 文件中的数据的帮助。
我目前的情况:我在下拉菜单中选择“文件夹 1”。接下来我需要一个按钮,它可以打开“文件夹 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 中选择和读取文件的内容。您必须为该阅读部分编写一些其他脚本。
从 tkinter combo box 中选择文件名的作用, 只不过是获取特定文件名作为 string类型。
然而,在 Python 中,阅读 .xlsx file 非常简单。 .
您可以使用 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()
窗口应该看起来像这样:

关于python - 如何使用 Tkinter 使用下拉菜单打开文件夹中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65880010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com