2016-07-07 4 views
0

Я пытаюсь отобразить диалоговое окно выбора каталога (для получения пути, а затем для сохранения загруженного материала). Код работает нормально в IDLE, но когда я пытаюсь запустить его в CMD я получаю эту ошибкуTkinter не работает в cmd (работает в IDLE)

NameError: name 'Tk' is not defined

Я использую Tkinter для графического интерфейса.

Код сниппета

from tkinter import filedialog 
root = Tk() 
root.withdraw() 
filename = filedialog.askdirectory() 

Использование Python 3.4.3. Любая помощь/предложения?

+0

Патч я применил в 3.4.4 и 3.5.1, как представляется, закрепили этот конкретный вопрос в том, что код запуска из IDLE теперь 3.5.2 или 3.6.0a2 результатов в NameError, как это должно быть. Проблема с трекером - https://bugs.python.org/issue25507. Я надеюсь закончить эту проблему с кодом IDLE, который должен завершиться неудачно, из-за скрытого импорта, до 3.6.0. –

+0

@TerryJanReedy Спасибо за информацию! –

+0

Мой ответ здесь: https://stackoverflow.com/questions/38806673/importing-from-a-package-in-idle-vs-shell/38808437#38808437 описывает, как исправить это в существующих выпусках. –

ответ

0

Заявление from tkinter import filedialog только импортирует модуль filedialog из tkinter. Если вам нужен обычный материал Tkinter, вам тоже нужно его импортировать. Я бы рекомендовал import tkinter as tk, а затем ссылался на него, например. root = tk.Tk(), поэтому вы не просто сбрасываете все в глобальное пространство имен. Или, если вы действительно хотите получить объект root, используйте from tkinter import Tk.

from tkinter import Tk 
from tkinter import filedialog 
root = Tk() 
root.withdraw() 
filename = filedialog.askdirectory() 
+0

Чувак, ты бог! Благодаря тонну! –