Получение пути к файлу для использования другой функцией с помощью Tkinter - PullRequest
0 голосов
/ 03 августа 2020

Я только начал работать с Tkinter, поэтому, пожалуйста, не судите меня по этому поводу ... Я хочу получить путь к файлу csv и затем использовать его, не завершая программу. Следующий код работает, однако, я выхожу из программы:

from tkinter import *
from tkinter import filedialog


root = Tk()
root.title('ask and print path to file')


def get_path():
    global path
    path = filedialog.askopenfile(title = 'Select the .csv file with keywords', filetypes = (('csv files','*.csv'), ('All files', '*.*')))

path_button = Button(root, text = 'Select keywords', command = get_path)
path_button.pack()


button_quit = Button(root, text ='Exit', command = root.quit)
button_quit.pack(side = BOTTOM)


root.mainloop()

print(path.name)

Оператор печати здесь только для простоты (на самом деле я хочу использовать pd.read_csv(path.name) для чтения файла, немного поспорить и затем вернуть измененный файл).

Как сделать print(path.name) не выходя из GUI в фоновом режиме?

1 Ответ

0 голосов
/ 03 августа 2020

Я бы изменил команду кнопки на функцию, которая выполняет весь код файла:

# update the button to call a different function
path_button = Button(root, text = 'Select keywords', command = handle_file)

# make a new function to handle everything
def handle_file():
    path = get_path()
    pd.read_csv(path.name)
    # any other stuff

# change this function too, so that it returns a value to "handle_file* rather than setting a global variable
def get_path():
   return filedialog.askopenfile(title = 'Select the .csv file with keywords', filetypes = (('csv files','*.csv'), ('All files', '*.*')))

Таким образом, вы не используете глобальные переменные, и ваш код может выполнять какие-то действия после того, как вы получите файл. Суть этого в том, что вы выполняете свой код обработки (pd.read_csv()) одновременно с получением пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...