【问题标题】:How to use Tkinter to open file in folder using dropdown如何使用 Tkinter 使用下拉菜单打开文件夹中的文件
【发布时间】:2021-04-28 23:27:39
【问题描述】:

在下拉列表中选择文件夹后,我需要有关如何制作按钮的帮助。

例如:我有 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 中显示 excel 文件是另一个问题,选择文件是另一个问题。
  • 我想你要找的是glob

标签: python excel tkinter file-handling


【解决方案1】:

您不能只从 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()

窗口应该看起来像这样:

【讨论】:

【解决方案2】:

我会探索在 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 允许用户导航文件夹树以找到正确的文件。 Basic documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 2013-09-15
    相关资源
    最近更新 更多