Tkinter askopenfilename () не открывается - PullRequest
0 голосов
/ 28 июня 2018

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

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

Tk().withdraw()
data_file_path = askopenfilename()

# other code with prompts, mostly print statements

Tk().withdraw()
drug_library_path = askopenfilename()

Как только код достигает первых двух строк кода, командная строка просто сидит с мигающим курсором, как будто она ожидает ввода (я полагаю, askopenfilename (), чтобы вернуть местоположение файла), но ничего не происходит. Я тоже не могу ctrl+C выйти из программы.

Я нашел этот вопрос , который близок к тому, что я ищу, но я на Windows, а не Mac, и я даже не могу заставить окно открыться - большинство вопросы, которые я вижу, говорят о невозможности закрыть окно.

Спасибо за любую помощь!

Примечание. На данный момент в программе не загружены данные из Excel. Это одна из первых строк, которая запускается.

Ответы [ 3 ]

0 голосов
/ 05 апреля 2019

У меня была такая же проблема, но я обнаружил, что проблема заключалась в том, что я получал ввод с помощью input (), прежде чем я вызвал askopenfilename () или fileopenbox ().

from   tkinter            import Tk
from   tkinter.filedialog import askopenfilename

var = input()
Tk().withdraw()
filepath = askopenfilename()

Я просто поменял позиции askopenfilename () (или fileopenbox ()) и input (), и все заработало как обычно.

Tk().withdraw()
filepath = askopenfilename()
var = input()
0 голосов
/ 05 апреля 2019

Если вы хотите использовать внутренний модуль, вы можете импортировать tkFileDialog и вызвать:

filename = tkFileDialog.askopenfilename(title="Open Filename",filetypes=(("TXT Files","*.txt"),("All Files","*.*")))

Я использую это во многих проектах, вы можете добавить такие аргументы, как initialdir, и вы можете указать допустимые типы файлов!

0 голосов
/ 28 июня 2018

Попробуйте easygui вместо. Он также построен на tkinter, но в отличие от filedialog он работает без полноценного графического интерфейса.

Поскольку вы используете Windows, используйте эту команду в командной строке (не в python) для установки easygui:

py -m pip install easygui

затем попробуйте этот код:

import easygui

data_file_path = easygui.fileopenbox()

# other code with prompts, mostly print statements

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