Загрузка файла Excel с использованием tkinter и обработка его в качестве информационного кадра с полным взаимодействием пользователя с графическим интерфейсом - PullRequest
0 голосов
/ 11 декабря 2019

Я разработал простой графический интерфейс с tkinter. Я загружаю файл Excel с рабочего стола и с помощью пути к этому файлу пытаюсь обработать этот файл Excel как фрейм данных. Я использую filedialog.askopenfilename() для загрузки файла. Я разработал меню file и его подменю open для загрузки файла.

Ниже приведен код для его достижения

from tkinter import *
from tkinter import filedialog
import pandas as pd
root = Tk()
menubar = Menu(root)
root.config(menu= menubar)
subMenu = Menu(menubar, tearoff=0)
def browse_file():
    global filename
    filename = filedialog.askopenfilename()
menubar.add_cascade(label="File", menu =subMenu)
subMenu.add_command(label="Open", command=browse_file)
root.geometry("600x600")
root.mainloop()
df = pd.read_excel(filename)
.
. #Further processing of all three dataframe .
.
print(df)

Я хочу загрузить три разных файла Excelтаким образом и обработка dataframes. Выше код предназначен только для загрузки одного dataframe в качестве примера. Приведенный выше код работает нормально, но обработка данных начинается, когда я закрываю графический интерфейс после загрузки файла. Я хочу знать, как я могу загрузить этот файл с одновременной обработкой файла, пока графический интерфейс остается открытым? Поскольку я должен закрыть свой графический интерфейс, чтобы начать дальнейшую обработку кадра данных

Также, если я пишу

df = pd.read_excel(filename)
.
. #Further processing of all three dataframe .
.
print(df)

выше root.mainloop, чем я получаю следующую ошибку -

    df = pd.read_excel(filename)
NameError: name 'filename' is not defined

Но я определил имя файла как глобальную переменную. Я пытаюсь выше код, чтобы файл обрабатывался, пока графический интерфейс остается открытым. Почему я получаю эту ошибку?

Таким образом, мой вопрос заключается в том, как загрузить все три файла Excel и обработать их как информационный кадр, пока графический интерфейс пользователя остается открытым. Потому что я должен закрыть графический интерфейс для дальнейшей обработки. Я хочу сделать этот графический интерфейс более интерактивным с пользователем. Если я загружаю файл, появляется статус загрузки файла.

1 Ответ

1 голос
/ 11 декабря 2019

Как минимум, это может быть что-то вроде этого:

import tkinter as tk
from tkinter import filedialog
import pandas as pd
from threading import Thread

root = tk.Tk()
menubar = tk.Menu(root)
root.config(menu= menubar)
subMenu = tk.Menu(menubar, tearoff=0)

def browse_file():
    filename = filedialog.askopenfilename()
    df = pd.read_excel(filename)
    #whatever you need to do with your df...

menubar.add_cascade(label="File", menu=subMenu)
subMenu.add_command(label="Open", command=lambda: Thread(target=browse_file).start())

root.geometry("600x600")
root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...